示例#1
0
        public static void TestZero <T>(IZeroMessageSerializer <T> serializer, T message, string expectedData = null) where T : P2PMessage
        {
            IByteBuffer buffer  = PooledByteBufferAllocator.Default.Buffer(1024 * 16);
            IByteBuffer buffer2 = PooledByteBufferAllocator.Default.Buffer(1024 * 16);

            try
            {
                serializer.Serialize(buffer, message);
                T deserialized = serializer.Deserialize(buffer);
                deserialized.Should().BeEquivalentTo(message);

                Assert.AreEqual(0, buffer.ReadableBytes, "readable bytes");

                serializer.Serialize(buffer2, deserialized);

                buffer.SetReaderIndex(0);
                string allHex = buffer.ReadAllHex();
                Assert.AreEqual(allHex, buffer2.ReadAllHex(), "test zero");

                if (expectedData != null)
                {
                    allHex.Should().BeEquivalentTo(expectedData);
                }
            }
            finally
            {
                buffer.Release();
                buffer2.Release();
            }
        }
示例#2
0
        public static void TestZero <T>(IZeroMessageSerializer <T> serializer, T message, string expectedData = null) where T : P2PMessage
        {
            IByteBuffer buffer  = PooledByteBufferAllocator.Default.Buffer(1024 * 16);
            IByteBuffer buffer2 = PooledByteBufferAllocator.Default.Buffer(1024 * 16);

            try
            {
                serializer.Serialize(buffer, message);
                T deserialized = serializer.Deserialize(buffer);

                // RlpLength is calculated explicitly when serializing an object by Calculate method. It's null after deserialization.
                deserialized.Should().BeEquivalentTo(message, options => options.Excluding(c => c.Name == "RlpLength"));

                Assert.AreEqual(0, buffer.ReadableBytes, "readable bytes");

                serializer.Serialize(buffer2, deserialized);

                buffer.SetReaderIndex(0);
                string allHex = buffer.ReadAllHex();
                Assert.AreEqual(allHex, buffer2.ReadAllHex(), "test zero");

                if (expectedData != null)
                {
                    allHex.Should().BeEquivalentTo(expectedData);
                }
            }
            finally
            {
                buffer.Release();
                buffer2.Release();
            }
        }
示例#3
0
        public static T Deserialize <T>(this IZeroMessageSerializer <T> serializer, byte[] message) where T : MessageBase
        {
            var buffer = UnpooledByteBufferAllocator.Default.Buffer(message.Length);

            buffer.WriteBytes(message);
            return(serializer.Deserialize(buffer));
        }
        public T Deserialize <T>(IByteBuffer buffer) where T : MessageBase
        {
            IMessageSerializer <T>     serializer     = GetSerializer <T>();
            IZeroMessageSerializer <T> zeroSerializer = serializer as IZeroMessageSerializer <T>;

            if (zeroSerializer != null)
            {
                return(zeroSerializer.Deserialize(buffer));
            }

            return(serializer.Deserialize(buffer.ReadAllBytes()));
        }
示例#5
0
        public static void TestZero <T>(IZeroMessageSerializer <T> serializer, T message) where T : P2PMessage
        {
            IByteBuffer buffer  = PooledByteBufferAllocator.Default.Buffer(1024 * 16);
            IByteBuffer buffer2 = PooledByteBufferAllocator.Default.Buffer(1024 * 16);

            try
            {
                serializer.Serialize(buffer, message);
                T deserialized = serializer.Deserialize(buffer);

                Assert.AreEqual(0, buffer.ReadableBytes, "readable bytes");

                serializer.Serialize(buffer2, deserialized);

                buffer.SetReaderIndex(0);
                Assert.AreEqual(buffer.ReadAllHex(), buffer2.ReadAllHex(), "test zero");
            }
            finally
            {
                buffer.Release();
                buffer2.Release();
            }
        }