private void ResumeReceive() { var socketArgs = SocketArgsPool.GetSocketArgs(); manager.SetBuffer(socketArgs); socketArgs.UserToken = this.TcpSocket; socketArgs.Completed += this.ProcessReceived; socketArgs.SocketFlags = SocketFlags.None; this.TcpSocket.ReceiveAsync(socketArgs); }
//private void ReceiveAsyncComplete(object sender, SocketAsyncEventArgs args) //{ // this.ProcessReceive(args); //} public virtual void Send(byte[] packet, int offset, int length) { if (this.TcpSocket != null && this.TcpSocket.Connected) { var args = SocketArgsPool.GetSocketArgs(); if (args != null) { args.Completed += SendAsyncComplete; args.SetBuffer(packet, offset, length); args.UserToken = this.TcpSocket; args.SocketFlags = SocketFlags.None; this.TcpSocket.SendAsync(args); unchecked { this.BytesSent += (uint)length; } } else { // TODO: Log an error } } }