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(); } }
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(); } }
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())); }
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(); } }