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 byte[] Serialize <T>(this IZeroMessageSerializer <T> serializer, T message) where T : MessageBase { IByteBuffer byteBuffer = UnpooledByteBufferAllocator.Default.Buffer(64); serializer.Serialize(byteBuffer, message); return(byteBuffer.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(); } }
public void Serialize <T>(T message, IByteBuffer byteBuffer) where T : MessageBase { IMessageSerializer <T> serializer = GetSerializer <T>(); IZeroMessageSerializer <T> zeroSerializer = serializer as IZeroMessageSerializer <T>; if (zeroSerializer != null) { zeroSerializer.Serialize(byteBuffer, message); } else { byte[] serialized = serializer.Serialize(message); byteBuffer.EnsureWritable(serialized.Length, true); byteBuffer.WriteBytes(serialized); } }
public static byte[] Serialize <T>(this IZeroMessageSerializer <T> serializer, T message) where T : MessageBase { IByteBuffer byteBuffer = UnpooledByteBufferAllocator.Default.Buffer( serializer is IZeroInnerMessageSerializer <T> zeroInnerMessageSerializer ? zeroInnerMessageSerializer.GetLength(message, out _) : 64); try { serializer.Serialize(byteBuffer, message); return(byteBuffer.ReadAllBytes()); } finally { byteBuffer.SafeRelease(); } }