public static DataMessage Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility) { return(new DataMessage( (DataAction)deserializer.ReadInt(), deserializer.ReadString(), deserializer.ReadBytes(), utility.DeserializeAddress(deserializer))); }
public static MessageContainer ReadFromBuffer(byte[] buffer, int offset, IConnectionUtility utility) { using (var stream = new MemoryStream(buffer, offset, buffer.Length - offset, false)) { var deserializer = new StreamDeserializer(stream); deserializer.ReadInt(); var messageType = (MessageType)deserializer.ReadInt(); if (!Enum.IsDefined(typeof(MessageType), messageType)) { //Console.WriteLine("Invalid message type!"); return(null); } //Console.WriteLine(" !! MessageType = " + messageType); return(new MessageContainer(MessageHelper.GetDeserializeMethod(messageType, utility)(deserializer))); } }
public static RedirectMessage Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility) { return(new RedirectMessage(utility.DeserializeAddress(deserializer), deserializer.ReadBytes())); }
public NonblockingSocketStream(Socket socket, IConnectionUtility connectionUtility, IMessageEncoder encoder) { this.socket = socket; this.connectionUtility = connectionUtility; this.encoder = encoder; }
public static Func <IBinaryDeserializer, IMessage> GetDeserializeMethod(MessageType type, IConnectionUtility utility) { switch (type) { case MessageType.String: return(StringMessage.Deserialize); case MessageType.Map: return(d => MapMessage.Deserialize(d, utility)); case MessageType.Data: return(d => DataMessage.Deserialize(d, utility)); case MessageType.Redirect: return(d => RedirectMessage.Deserialize(d, utility)); case MessageType.Pull: return(PullMessage.Deserialize); default: throw new ArgumentOutOfRangeException("Unknown message type: " + type); } }
public TcpConnection(TcpAddress localAddress, TcpAddress remoteAddress, Socket socket, IConnectionUtility connectionUtility, IEncryptionManager encryptionManager) { RemoteAddress = remoteAddress; this.localAddress = localAddress; this.socket = socket; this.connectionUtility = connectionUtility; stream = new NonblockingSocketStream(socket, connectionUtility, encryptionManager.CreateEncoder(this)); State = ConnectionState.Connecting; }
public static MapMessage Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility) { return(new MapMessage(deserializer.ReadList(d => RoutingMapLink.Deserialize(deserializer, utility)), deserializer.ReadInt() != 0)); }
public static RoutingMapLink Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility) { return(new RoutingMapLink(utility.DeserializeAddress(deserializer), utility.DeserializeAddress(deserializer), deserializer.ReadInt(), deserializer.ReadInt() != 0)); }