Пример #1
0
        private void TestGenericList <T> (T entry1, T entry2)
        {
            List <T> objList = new List <T>();

            objList.Add(entry1);
            objList.Add(entry2);

            string logHeader = string.Format("List<{0}>: ", typeof(T).ToString());

            var msg       = MsgPackSerializer.SerializeObject(objList);
            var desizList = MsgPackSerializer.Deserialize <List <T> >(msg);

            Assert.That(desizList != null, logHeader + "null desiz");
            Assert.That(typeof(List <T>) == desizList.GetType(), logHeader + "different types");

            if (entry1 == null)
            {
                Assert.That(objList[0] == null);
            }
            else
            {
                Assert.That(desizList[0].Equals(entry1), logHeader + "value lost 1: " + entry1.ToString());
            }

            if (entry2 == null)
            {
                Assert.That(objList[1] == null);
            }
            else
            {
                Assert.That(desizList[1].Equals(entry2), logHeader + "value lost 2: " + entry2.ToString());
            }
        }
Пример #2
0
 public static byte[] ToMsgPack(this object o)
 {
     if (o == null)
     {
         throw new ArgumentException("Can't serialize null references", "o");
     }
     return(MsgPackSerializer.SerializeObject(o));
 }
Пример #3
0
        private static void TestMsgPackSharp()
        {
            for (int i = 0; i < numMessagesToTest; i++)
            {
                byte[] buffer = MsgPackSerializer.SerializeObject(testMsg);
#pragma warning disable 0219
                var deserialized = MsgPackSerializer.Deserialize <AnimalMessage>(buffer);
#pragma warning restore 0219
            }
        }
Пример #4
0
        public NetworkMessage Clone()
        {
            MsgPackSerializer.SerializeObject(this, cloneBuffer, 0);
            var result = (NetworkMessage)(GetType().GetConstructor(Type.EmptyTypes).Invoke(emptyArgs));

            MsgPackSerializer.DeserializeObject(result, cloneBuffer, 0);
            result.SequenceNumber = SequenceNumber;
            result.Source         = Source;
            result.Id             = Id;
            return(result);
        }
Пример #5
0
        public int Write(byte[] buffer)
        {
            int offset = 1;

            buffer[0] = Id;
            if (IsGuaranteed)
            {
                buffer[1] = (byte)(SequenceNumber & 0x00FF);
                buffer[2] = (byte)((SequenceNumber & 0xFF00) >> 8);
                offset    = 3;
            }
            return(MsgPackSerializer.SerializeObject(this, buffer, offset));
        }
Пример #6
0
        public void TestMixedTypeDictionaryRoundTrip()
        {
            MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Array;
            var obj = new Dictionary <string, object> {
                { "Boolean", false },
                { "String", "string" },
                { "Float", 1.0f },
                { "Null", null }
            };

            var msg = MsgPackSerializer.SerializeObject(obj);

            var deserializedDictionary = MsgPackSerializer.Deserialize <Dictionary <string, object> > (msg);

            Assert.That(deserializedDictionary.ContainsValue(false));
        }
Пример #7
0
        public void TestNestedObject()
        {
            MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Array;
            var obj = new SerializationTestObject();

            byte[] msg   = MsgPackSerializer.SerializeObject(obj);
            var    desiz = MsgPackSerializer.Deserialize <SerializationTestObject>(msg);

            Assert.That(desiz != null, "No Nesting: null desiz");
            Assert.That(desiz.Equals(obj), "No Nesting: not equal");

            obj.AddChild();
            msg   = MsgPackSerializer.SerializeObject(obj);
            desiz = MsgPackSerializer.Deserialize <SerializationTestObject>(msg);

            Assert.That(desiz != null, "Nesting: null desiz");
            Assert.That(desiz.Equals(obj), "Nesting: not equal");
        }
Пример #8
0
        public void TestDeserializationOfMixedTypeDictionary()
        {
            MsgPackSerializer.DefaultContext.SerializationMethod = SerializationMethod.Array;
            var obj = new Dictionary <string, object> {
                { "Boolean", false },
                { "String", "string" },
                { "Float", 1.0f },
                { "Null", null }
            };

            var msg = MsgPackSerializer.SerializeObject(obj);

            var deserializedDictionary = MsgPackSerializer.Deserialize <Dictionary <string, object> >(msg);

            object value = null;

            deserializedDictionary.TryGetValue("Boolean", out value);
            Assert.That(value.Equals(false));
        }
Пример #9
0
        private void BuildInstances(Assembly messageAssembly)
        {
            Type networkMsgType = typeof(NetworkMessage);

            foreach (Type t in messageAssembly.GetTypes())
            {
                if (t.IsSubclassOf(networkMsgType) && !messagesByType.ContainsKey(t))
                {
                    if (messages.Count == Byte.MaxValue)
                    {
                        throw new ApplicationException("The maximum number of network messages has been reached - you need to use fewer message types in this project");
                    }
                    var msg = (NetworkMessage)t.GetConstructor(Type.EmptyTypes).Invoke(Utility.emptyArgs);
                    MsgPackSerializer.SerializeObject(msg, NetworkMessage.cloneBuffer, 0);
                    MsgPackSerializer.DeserializeObject(msg, NetworkMessage.cloneBuffer, 0);
                    msg.Id           = (byte)messages.Count;
                    messages[msg.Id] = msg;
                    messagesByType[msg.GetType()] = msg;
                    NeutrinoConfig.Log("Registered message type " + msg.GetType() + " as Id " + msg.Id);
                }
            }
        }
Пример #10
0
        private void TestGenericDictionary <Key, Value> (Key testKey, Value testValue)
        {
            Dictionary <Key, Value> intDict = new Dictionary <Key, Value>();

            intDict.Add(testKey, testValue);

            var msg       = MsgPackSerializer.SerializeObject(intDict);
            var desizDict = MsgPackSerializer.Deserialize <Dictionary <Key, Value> >(msg);

            string logHeader = string.Format("Dictionary<{0}, {1}>: ", typeof(Key).ToString(), typeof(Value).ToString());

            Assert.That(desizDict != null, logHeader + "null desiz");
            Assert.That(typeof(Dictionary <Key, Value>) == desizDict.GetType(), logHeader + "different types");

            if (testValue == null)
            {
                Assert.That(desizDict[testKey] == null);
            }
            else
            {
                Assert.That(desizDict.ContainsKey(testKey) && desizDict[testKey].Equals(testValue), logHeader + "key value lost");
            }
        }
Пример #11
0
 public void write(NetOutgoingMessage packet, LimeMessage msg)
 {
     packet.Write(msg.id);
     packet.Write(MsgPackSerializer.SerializeObject(msg));
 }