private void OnReceive(IAsyncResult asyncResult) { try { Socket s = (Socket)asyncResult.AsyncState; int byteCount = s.EndReceive(asyncResult); if (byteCount > 0) { m_NextCheckActivity = Core.TickCount + 90000; byte[] buffer; lock (m_AsyncLock) buffer = m_RecvBuffer; if (PacketEncryptor != null) { PacketEncryptor.DecryptIncomingPacket(this, ref buffer, ref byteCount); } if (PacketEncoder != null) { PacketEncoder.DecodeIncomingPacket(this, ref buffer, ref byteCount); } lock (m_Buffer) m_Buffer.Enqueue(buffer, 0, byteCount); m_MessagePump.OnReceive(this); lock (m_AsyncLock) { m_AsyncState &= ~AsyncState.Pending; if ((m_AsyncState & AsyncState.Paused) == 0) { try { InternalBeginReceive(); } catch (Exception ex) { TraceException(ex); Dispose(false); } } } } else { Dispose(false); } } catch { Dispose(false); } }
private void OnReceive(IAsyncResult asyncResult) { lock (this) { if (Socket == null) { return; } try { var byteCount = Socket.EndReceive(asyncResult); if (byteCount > 0) { m_NextCheckActivity = DateTime.UtcNow + TimeSpan.FromMinutes(1.2); var buffer = m_RecvBuffer; if (PacketEncoder != null) { PacketEncoder.DecodeIncomingPacket(this, ref buffer, ref byteCount); } Buffer.Enqueue(buffer, 0, byteCount); Incoming += byteCount; m_NetServer.OnReceive(this, byteCount); } else { Dispose(false); } } catch (Exception ex) { TraceException(ex); Dispose(false); } } }