Example #1
0
 public static DataMessage Deserialize(IBinaryDeserializer deserializer, IConnectionUtility utility)
 {
     return(new DataMessage(
                (DataAction)deserializer.ReadInt(),
                deserializer.ReadString(),
                deserializer.ReadBytes(),
                utility.DeserializeAddress(deserializer)));
 }
Example #2
0
 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)));
     }
 }
Example #3
0
 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;
 }
Example #5
0
        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);
            }
        }
Example #6
0
 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;
 }
Example #7
0
 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));
 }