internal MessageReceivedEventArgs(TcpConnection connection, Message msg) { Connection = connection; MessageTypeId = msg.MessageTypeId; MessageUID = msg.MessageUID; MessageData = msg.MessageData; }
protected internal void SendMessage(TcpConnection connection, ulong messageType) { Message msg = new Message() { MessageTypeId = messageType, }; SendMessage(connection, msg); }
private void SendMessage(TcpConnection connection, Message message) { MemoryStream stream = new MemoryStream(); switch(MessageType) { case MessageType.Simple: byte[] data; ConvertHelper.Int32ToNewBytes((int)message.MessageTypeId, out data); stream.Write(data, 0, 4); if (message.MessageData != null) stream.Write(message.MessageData, 0, message.MessageData.Length); break; case MessageType.Protobuf: ProtoBuf.Serializer.Serialize<Message>(stream, message); break; } TcpDatagram datagram = new TcpDatagram((int)stream.Length); datagram.Data = stream; SendDatagram(connection, datagram); }
protected void NewDatagram(TcpConnection connection) { Message msg = null; try { switch (MessageType) { case MessageType.Simple: msg = new Message(); byte[] type = new byte[4]; connection.Datagram.Data.Read(type, 0, 4); msg.MessageTypeId = (ulong)ConvertHelper.BytesToInt32(type); msg.MessageData = new byte[connection.Datagram.Data.Length - 4]; connection.Datagram.Data.Read(msg.MessageData, 0, msg.MessageData.Length); break; case MessageType.Protobuf: msg = ProtoBuf.Serializer.Deserialize<Message>(connection.Datagram.Data); break; } } catch (Exception ex) { OnErrorOccured(new ErrorOccuredEventArgs(ex)); } if (msg != null) { OnMessageReceived(new MessageReceivedEventArgs(connection, msg.MessageTypeId, msg.MessageUID, msg.MessageData)); } }
protected internal void SendMessage(TcpConnection connection, ulong messageType, ulong messageUID, MemoryStream data) { byte[] buffer = new byte[data.Length]; data.Position = 0; data.Read(buffer, 0, (int)data.Length); Message msg = new Message() { MessageTypeId = messageType, MessageUID = messageUID, MessageData = buffer }; SendMessage(connection, msg); }
protected internal void SendMessage(TcpConnection connection, ulong messageType, ulong messageUID, byte[] data) { Message msg = new Message() { MessageTypeId = messageType, MessageUID = messageUID, MessageData = data }; SendMessage(connection, msg); }