Esempio n. 1
0
    public IDictionary <K, V> PopMap <K, V>()
    {
        long len = 0;

        if (!unpacker.ReadMapLength(out len))
        {
            return(null);
        }
        IDictionary <K, V> dict = new Dictionary <K, V>();

        for (int i = 0; i < len; i++)
        {
            dict.Add(Pop <K>(), Pop <V>());
        }
        return(dict);
    }
Esempio n. 2
0
    public IDictionary <K, V> GetMapt <K, V>(int index)
    {
        MemoryStream s         = new MemoryStream(buff);
        Unpacker     _unpacker = Unpacker.Create(s);

        for (int i = 0; i < index; i++)
        {
            _unpacker.Skip();
        }

        long len = 0;

        if (!_unpacker.ReadMapLength(out len))
        {
            return(null);
        }
        IDictionary <K, V> dict = new Dictionary <K, V>();

        for (int i = 0; i < len; i++)
        {
            dict.Add(_unpacker.Unpack <K>(), _unpacker.Unpack <V>());
        }
        _unpacker.Dispose();
        s.Close();
        return(dict);
    }
Esempio n. 3
0
        public void UnpackTo(Unpacker unpacker, IDictionary <string, object> collection)
        {
            long mapLength;

            if (!unpacker.ReadMapLength(out mapLength))
            {
                throw new InvalidMessagePackStreamException("map header expected");
            }
            UnpackTo(unpacker, collection, mapLength);
        }
Esempio n. 4
0
        public ProtocolMessage DeserializeProtocolMessage(object value)
        {
            ProtocolMessage message = new ProtocolMessage();

            using (MemoryStream stream = new MemoryStream((byte[])value))
            {
                using (Unpacker unpacker = Unpacker.Create(stream))
                {
                    long fieldCount = 0;
                    unpacker.ReadMapLength(out fieldCount);
                    for (int i = 0; i < fieldCount; i++)
                    {
                        string fieldName;
                        unpacker.ReadString(out fieldName);
                        unpackActions[fieldName](unpacker, message);
                    }
                }
            }
            return(message);
        }
Esempio n. 5
0
        private static Message DeserializeMessage(Unpacker unpacker)
        {
            Message message = new Message();

            long fields;

            unpacker.ReadMapLength(out fields);
            string fieldName;

            for (int i = 0; i < fields; i++)
            {
                unpacker.ReadString(out fieldName);
                switch (fieldName)
                {
                case Message.NamePropertyName:
                {
                    string result;
                    unpacker.ReadString(out result);
                    message.Name = result;
                }
                break;

                case Message.TimestampPropertyName:
                {
                    long result;
                    unpacker.ReadInt64(out result);
                    message.Timestamp = result.FromUnixTimeInMilliseconds();
                }
                break;

                case Message.DataPropertyName:
                {
                    MessagePackObject result = unpacker.ReadItemData();
                    message.Data = ParseResult(result);
                }
                break;
                }
            }

            return(message);
        }
Esempio n. 6
0
        private static PresenceMessage DeserializePresenceMessage(Unpacker unpacker)
        {
            PresenceMessage message = new PresenceMessage();

            long fields;

            unpacker.ReadMapLength(out fields);
            string fieldName;

            for (int i = 0; i < fields; i++)
            {
                unpacker.ReadString(out fieldName);
                switch (fieldName)
                {
                case PresenceMessage.ActionPropertyName:
                {
                    int result;
                    unpacker.ReadInt32(out result);
                    message.Action = (PresenceMessage.ActionType)result;
                }
                break;

                case PresenceMessage.IdPropertyName:
                {
                    string result;
                    unpacker.ReadString(out result);
                    message.Id = result;
                }
                break;

                case PresenceMessage.ClientIdPropertyName:
                {
                    string result;
                    unpacker.ReadString(out result);
                    message.ClientId = result;
                }
                break;

                case PresenceMessage.ConnectionIdPropertyName:
                {
                    string result;
                    unpacker.ReadString(out result);
                    message.ConnectionId = result;
                }
                break;

                case PresenceMessage.TimestampPropertyName:
                {
                    long result;
                    unpacker.ReadInt64(out result);
                    message.Timestamp = result.FromUnixTimeInMilliseconds();
                }
                break;

                case PresenceMessage.DataPropertyName:
                {
                    MessagePackObject result = unpacker.ReadItemData();
                    message.Data = ParseResult(result);
                }
                break;
                }
            }

            return(message);
        }