private void SendNext(SocketAsyncEventArgs args) { if (_queue.TryPeek(out IMessage message)) { args.SetBuffer(message.Data.ToArray()); BeginSend(args); } else { // should be impossible var e = new Exception("No message to send!"); _server.RaiseError(_session, e); // TODO reset lock? } }
private void BeginReceive(Socket socket, SocketAsyncEventArgs args) { try { if (!socket.ReceiveAsync(args)) { ReceiveComplete(socket, args); } } catch (Exception e) { _server.RaiseError(_session, e); args.Dispose(); } }