private void ProcessRecieve(SocketAsyncEventArgs args) { try { var bytesReceived = args.BytesTransferred; if (bytesReceived == 0) //if (args.SocketError != SocketError.Success) { // no bytes means the client disconnected, so clean up! _server.DisconnectClient(this, true); } else { // increment our counters unchecked { _bytesReceived += (uint)bytesReceived; } Interlocked.Add(ref _totalBytesReceived, bytesReceived); _remainingLength += bytesReceived; if (OnReceive(_bufferSegment)) { // packet processed entirely _offset = 0; _remainingLength = 0; _bufferSegment.DecrementUsage(); _bufferSegment = Buffers.CheckOut(); } else { EnsureBuffer(); } ResumeReceive(); } } catch (ObjectDisposedException) { _server.DisconnectClient(this, true); } catch (Exception e) { _server.Warning(this, e); _server.DisconnectClient(this, true); } finally { args.Completed -= ReceiveAsyncComplete; SocketHelpers.ReleaseSocketArg(args); } }
private void ProcessRecieve(SocketAsyncEventArgs args) { try { int bytesTransferred = args.BytesTransferred; if (bytesTransferred == 0) { _server.DisconnectClient(this, true, false); } else { _bytesReceived += (uint)bytesTransferred; Interlocked.Add(ref _totalBytesReceived, bytesTransferred); _remainingLength += bytesTransferred; if (_remainingLength > 6) { OnReceive(); } ResumeReceive(); } } catch (ObjectDisposedException ex) { _server.DisconnectClient(this, true, false); } catch (Exception ex) { _server.Warning(this, ex); _server.DisconnectClient(this, true, false); } finally { args.Completed -= ReceiveAsyncComplete; SocketHelpers.ReleaseSocketArg(args); } }
private void ProcessRecieve(SocketAsyncEventArgs args) { try { int bytesTransferred = args.BytesTransferred; if (bytesTransferred == 0) { this._server.DisconnectClient((IClient)this, true, false); } else { this._bytesReceived += (uint)bytesTransferred; Interlocked.Add(ref ClientBase._totalBytesReceived, (long)bytesTransferred); this._remainingLength += bytesTransferred; if (this._remainingLength > 6) { this.OnReceive(); } this.ResumeReceive(); } } catch (ObjectDisposedException ex) { this._server.DisconnectClient((IClient)this, true, false); } catch (Exception ex) { this._server.Warning((IClient)this, ex); this._server.DisconnectClient((IClient)this, true, false); } finally { args.Completed -= new EventHandler <SocketAsyncEventArgs>(this.ReceiveAsyncComplete); SocketHelpers.ReleaseSocketArg(args); } }
private static void SendAsyncComplete(object sender, SocketAsyncEventArgs args) { args.Completed -= SendAsyncComplete; SocketHelpers.ReleaseSocketArg(args); }
private static void SendAsyncComplete(object sender, SocketAsyncEventArgs args) { args.Completed -= new EventHandler <SocketAsyncEventArgs>(ClientBase.SendAsyncComplete); SocketHelpers.ReleaseSocketArg(args); }