From 9df55b9c082a37da070fe351fbb91d0aa3a114d9 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Sun, 21 Jul 2024 22:36:57 -0400 Subject: [PATCH] add ReadToEnd function --- .../src/lib/MBS.Core/StreamExtensions.cs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/framework-dotnet/src/lib/MBS.Core/StreamExtensions.cs b/framework-dotnet/src/lib/MBS.Core/StreamExtensions.cs index b1a5d14..3d0e9c9 100644 --- a/framework-dotnet/src/lib/MBS.Core/StreamExtensions.cs +++ b/framework-dotnet/src/lib/MBS.Core/StreamExtensions.cs @@ -96,4 +96,33 @@ public static class StreamExtensions } _streamPositions[st].Push(st.Position); } + + private const long BUFFER_SIZE=4096; + public static byte[] ReadToEnd(this Stream st) + { + byte[] buffer = new byte[BUFFER_SIZE]; + byte[] output = new byte[0]; + int i = 0; + bool done = false; + while (!done) + { + int length = st.Read(buffer, 0, buffer.Length); + if (length == 0) + { + done = true; + break; + } + + if (length < BUFFER_SIZE) + { + Array.Resize(ref buffer, length); + done = true; + } + + Array.Resize(ref output, output.Length + buffer.Length); + Array.Copy(buffer, 0, output, i, buffer.Length); + i += buffer.Length; + } + return output; + } } \ No newline at end of file