public virtual void Send(NetworkMessage message) { if (Socket == null || !Connected) { return; } var args = new SocketAsyncEventArgs(); args.Completed += OnSendCompleted; args.UserToken = message; byte[] data; using (var writer = new BigEndianWriter()) { message.Pack(writer); data = writer.Data; } args.SetBuffer(data, 0, data.Length); if (!Socket.SendAsync(args)) { OnMessageSended(message); args.Dispose(); } LastActivity = DateTime.Now; }
public void Send(NetworkMessage message) { lock (this) { if (!IsConnected) return; var args = new SocketAsyncEventArgs(); args.Completed += OnSendCompleted; args.UserToken = message; byte[] data; using (var writer = new BigEndianWriter()) { message.Pack(writer); data = writer.Data; } args.SetBuffer(data, 0, data.Length); if (!Socket.SendAsync(args)) { OnMessageSended(message); args.Dispose(); } LastActivity = DateTime.Now; } }