From a4c939d0e69d6a7f6976eae672cbcf8a2574135e Mon Sep 17 00:00:00 2001 From: jake1029 <55038561+jake1029@users.noreply.github.com> Date: Fri, 24 May 2024 15:51:52 -0400 Subject: [PATCH] Make StreamValueNode aware of FieldOffset. --- .../Graph/ValueGraph/StreamValueNode.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs b/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs index 497b5816..7f1f9462 100644 --- a/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs +++ b/BinarySerializer/Graph/ValueGraph/StreamValueNode.cs @@ -21,10 +21,11 @@ internal override void SerializeOverride(BoundedStream stream, EventShuttle even var valueStream = (Stream) Value; var length = GetConstFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; if (length != null) { - var valueStreamlet = new Streamlet(valueStream, valueStream.Position, length.ByteCount); + var valueStreamlet = new Streamlet(valueStream, offset, length.ByteCount); valueStreamlet.CopyTo(stream); } else @@ -38,10 +39,11 @@ internal override async Task SerializeOverrideAsync(BoundedStream stream, EventS var valueStream = (Stream)Value; var length = GetConstFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; if (length != null) { - var valueStreamlet = new Streamlet(valueStream, valueStream.Position, length.ByteCount); + var valueStreamlet = new Streamlet(valueStream, offset, length.ByteCount); await valueStreamlet.CopyToAsync(stream, CopyToBufferSize, cancellationToken).ConfigureAwait(false); } else @@ -55,10 +57,11 @@ internal override void DeserializeOverride(BoundedStream stream, SerializationOp var rootStream = GetRootStream(stream); var length = GetFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; Value = length != null - ? new Streamlet(rootStream, rootStream.Position, length.ByteCount) - : new Streamlet(rootStream, rootStream.Position); + ? new Streamlet(rootStream, offset, length.ByteCount) + : new Streamlet(rootStream, offset); if (length != null) { @@ -77,10 +80,11 @@ internal override async Task DeserializeOverrideAsync(BoundedStream stream, Seri var rootStream = GetRootStream(stream); var length = GetFieldLength(); + var offset = GetFieldOffset() == null ? stream.Position : GetFieldOffset().Value; Value = length != null - ? new Streamlet(rootStream, rootStream.Position, length.ByteCount) - : new Streamlet(rootStream, rootStream.Position); + ? new Streamlet(rootStream, offset, length.ByteCount) + : new Streamlet(rootStream, offset); if (length != null) {