Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/aspnet/MessagePack-CSharp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2020-01-27 07:40:11 +0300
committerAndrew Arnott <andrewarnott@gmail.com>2020-01-27 07:40:11 +0300
commit690336fec72f52781a36539679aeea79bd7d353e (patch)
tree600ab746000803b31efa2b061cda75740f267f34
parent0a97ab02af39a4e31a08a2dce8b5da451a95ec48 (diff)
Add MessagePackStreamReader.DiscardBufferedData method
-rw-r--r--src/MessagePack.UnityClient/Assets/Scripts/MessagePack/MessagePackStreamReader.cs14
-rw-r--r--src/MessagePack.UnityClient/Assets/Scripts/Tests/ShareTests/MessagePackStreamReaderTests.cs20
-rw-r--r--src/MessagePack/PublicAPI.Unshipped.txt1
3 files changed, 35 insertions, 0 deletions
diff --git a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/MessagePackStreamReader.cs b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/MessagePackStreamReader.cs
index 3aa65cad..fb439ddc 100644
--- a/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/MessagePackStreamReader.cs
+++ b/src/MessagePack.UnityClient/Assets/Scripts/MessagePack/MessagePackStreamReader.cs
@@ -90,6 +90,20 @@ namespace MessagePack
}
}
+ /// <summary>
+ /// Arranges for the next read operation to start by reading from the underlying <see cref="Stream"/>
+ /// instead of any data buffered from a previous read.
+ /// </summary>
+ /// <remarks>
+ /// This is appropriate if the underlying <see cref="Stream"/> has been repositioned such that
+ /// any previously buffered data is no longer applicable to what the caller wants to read.
+ /// </remarks>
+ public void DiscardBufferedData()
+ {
+ this.sequenceRental.Value.Reset();
+ this.endOfLastMessage = default;
+ }
+
/// <inheritdoc/>
public void Dispose()
{
diff --git a/src/MessagePack.UnityClient/Assets/Scripts/Tests/ShareTests/MessagePackStreamReaderTests.cs b/src/MessagePack.UnityClient/Assets/Scripts/Tests/ShareTests/MessagePackStreamReaderTests.cs
index b5896e49..fddb4cad 100644
--- a/src/MessagePack.UnityClient/Assets/Scripts/Tests/ShareTests/MessagePackStreamReaderTests.cs
+++ b/src/MessagePack.UnityClient/Assets/Scripts/Tests/ShareTests/MessagePackStreamReaderTests.cs
@@ -140,6 +140,26 @@ namespace MessagePack.Tests
}
[Fact]
+ public async Task DiscardBufferedData()
+ {
+ var ms = new MemoryStream(this.twoMessages.ToArray());
+ using (var reader = new MessagePackStreamReader(ms))
+ {
+ var message1a = await reader.ReadAsync(this.TimeoutToken);
+ Assert.NotNull(message1a);
+ Assert.Equal(this.twoMessages.Slice(0, this.messagePositions[0]).ToArray(), message1a.Value.ToArray());
+
+ ms.Position = 0;
+ reader.DiscardBufferedData();
+
+ // Verify that we can read the message at the start of the new position.
+ var message1b = await reader.ReadAsync(this.TimeoutToken);
+ Assert.NotNull(message1b);
+ Assert.Equal(this.twoMessages.Slice(0, this.messagePositions[0]).ToArray(), message1b.Value.ToArray());
+ }
+ }
+
+ [Fact]
public void DisposeClosesStream()
{
var ms = new MemoryStream();
diff --git a/src/MessagePack/PublicAPI.Unshipped.txt b/src/MessagePack/PublicAPI.Unshipped.txt
index f5d69265..3c481910 100644
--- a/src/MessagePack/PublicAPI.Unshipped.txt
+++ b/src/MessagePack/PublicAPI.Unshipped.txt
@@ -7,6 +7,7 @@ MessagePack.MessagePackReader.ReadDateTime(MessagePack.ExtensionHeader header) -
MessagePack.MessagePackReader.TryReadArrayHeader(out int count) -> bool
MessagePack.MessagePackReader.TryReadExtensionFormatHeader(out MessagePack.ExtensionHeader extensionHeader) -> bool
MessagePack.MessagePackReader.TryReadMapHeader(out int count) -> bool
+MessagePack.MessagePackStreamReader.DiscardBufferedData() -> void
MessagePack.MessagePackStreamReader.MessagePackStreamReader(System.IO.Stream stream, bool leaveOpen) -> void
MessagePack.MessagePackStreamReader.ReadArrayAsync(System.Threading.CancellationToken cancellationToken) -> System.Collections.Generic.IAsyncEnumerable<System.Buffers.ReadOnlySequence<byte>>
MessagePack.MessagePackWriter.WriteBinHeader(int length) -> void