public byte[] Serialize(object obj) { StreamBuffer streamBuffer = new StreamBuffer(64); this.Serialize(streamBuffer, obj, true); return(streamBuffer.ToArray()); }
private void EnqueueInit(byte[] data) { bool flag = !this.DoFraming; if (!flag) { StreamBuffer streamBuffer = new StreamBuffer(data.Length + 32); BinaryWriter binaryWriter = new BinaryWriter(streamBuffer); byte[] array = new byte[] { 251, 0, 0, 0, 0, 0, 1 }; int num = 1; Protocol.Serialize(data.Length + array.Length, array, ref num); binaryWriter.Write(array); binaryWriter.Write(data); byte[] array2 = streamBuffer.ToArray(); bool trafficStatsEnabled = base.TrafficStatsEnabled; if (trafficStatsEnabled) { TrafficStats expr_79 = base.TrafficStatsOutgoing; int num2 = expr_79.TotalPacketCount; expr_79.TotalPacketCount = num2 + 1; TrafficStats expr_91 = base.TrafficStatsOutgoing; num2 = expr_91.TotalCommandsInPackets; expr_91.TotalCommandsInPackets = num2 + 1; base.TrafficStatsOutgoing.CountControlCommand(array2.Length); } this.EnqueueMessageAsPayload(true, array2, 0); } }
public void ReceiveLoop() { StreamBuffer streamBuffer = new StreamBuffer(base.MTU); byte[] array = new byte[9]; while (base.State == PhotonSocketState.Connected) { streamBuffer.SetLength(0L); try { int i = 0; int num = 0; while (i < 9) { try { num = this.sock.Receive(array, i, 9 - i, SocketFlags.None); } catch (SocketException ex) { bool flag = base.State != PhotonSocketState.Disconnecting && base.State > PhotonSocketState.Disconnected && ex.SocketErrorCode == SocketError.WouldBlock; if (flag) { bool flag2 = base.ReportDebugOfLevel(DebugLevel.ALL); if (flag2) { base.EnqueueDebugReturn(DebugLevel.ALL, "ReceiveLoop() got a WouldBlock exception. This is non-fatal. Going to continue."); } continue; } throw; } i += num; bool flag3 = num == 0; if (flag3) { throw new SocketException(10054); } } bool flag4 = array[0] == 240; if (flag4) { base.HandleReceivedDatagram(array, array.Length, true); } else { int num2 = (int)array[1] << 24 | (int)array[2] << 16 | (int)array[3] << 8 | (int)array[4]; bool trafficStatsEnabled = this.peerBase.TrafficStatsEnabled; if (trafficStatsEnabled) { bool flag5 = array[5] == 0; bool flag6 = flag5; if (flag6) { this.peerBase.TrafficStatsIncoming.CountReliableOpCommand(num2); } else { this.peerBase.TrafficStatsIncoming.CountUnreliableOpCommand(num2); } } bool flag7 = base.ReportDebugOfLevel(DebugLevel.ALL); if (flag7) { base.EnqueueDebugReturn(DebugLevel.ALL, "message length: " + num2); } streamBuffer.SetCapacityMinimum(num2 - 7); streamBuffer.Write(array, 7, i - 7); i = 0; num2 -= 9; while (i < num2) { try { num = this.sock.Receive(streamBuffer.GetBuffer(), (int)streamBuffer.Position, num2 - i, SocketFlags.None); } catch (SocketException ex2) { bool flag8 = base.State != PhotonSocketState.Disconnecting && base.State > PhotonSocketState.Disconnected && ex2.SocketErrorCode == SocketError.WouldBlock; if (flag8) { bool flag9 = base.ReportDebugOfLevel(DebugLevel.ALL); if (flag9) { base.EnqueueDebugReturn(DebugLevel.ALL, "ReceiveLoop() got a WouldBlock exception. This is non-fatal. Going to continue."); } continue; } throw; } streamBuffer.Position += (long)num; i += num; bool flag10 = num == 0; if (flag10) { throw new SocketException(10054); } } base.HandleReceivedDatagram(streamBuffer.ToArray(), (int)streamBuffer.Length, false); bool flag11 = base.ReportDebugOfLevel(DebugLevel.ALL); if (flag11) { base.EnqueueDebugReturn(DebugLevel.ALL, "TCP < " + streamBuffer.Length + ((streamBuffer.Length == (long)(num2 + 2)) ? " OK" : " BAD")); } } } catch (SocketException ex3) { bool flag12 = base.State != PhotonSocketState.Disconnecting && base.State > PhotonSocketState.Disconnected; if (flag12) { bool flag13 = base.ReportDebugOfLevel(DebugLevel.ERROR); if (flag13) { base.EnqueueDebugReturn(DebugLevel.ERROR, "Receiving failed. SocketException: " + ex3.SocketErrorCode); } bool flag14 = ex3.SocketErrorCode == SocketError.ConnectionReset || ex3.SocketErrorCode == SocketError.ConnectionAborted; if (flag14) { base.HandleException(StatusCode.DisconnectByServer); } else { base.HandleException(StatusCode.ExceptionOnReceive); } } } catch (Exception ex4) { bool flag15 = base.State != PhotonSocketState.Disconnecting && base.State > PhotonSocketState.Disconnected; if (flag15) { bool flag16 = base.ReportDebugOfLevel(DebugLevel.ERROR); if (flag16) { base.EnqueueDebugReturn(DebugLevel.ERROR, string.Concat(new object[] { "Receive issue. State: ", base.State, ". Server: '", base.ServerAddress, "' Exception: ", ex4 })); } base.HandleException(StatusCode.ExceptionOnReceive); } } } this.Disconnect(); }