From 633c77d7cd2dd5cd22018aca17da1490e34d94ec Mon Sep 17 00:00:00 2001 From: crupest Date: Mon, 10 Jun 2024 13:40:32 +0800 Subject: test: develop SubProcess test, fix various error. NEED TEST: BufferStream, AutoReadStream, SubProcess. --- src/common/io/Stream.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/common/io/Stream.cpp') diff --git a/src/common/io/Stream.cpp b/src/common/io/Stream.cpp index 97669944..b2a67a18 100644 --- a/src/common/io/Stream.cpp +++ b/src/common/io/Stream.cpp @@ -58,17 +58,23 @@ Index Stream::Write(const char* buffer, Index size) { return Write(reinterpret_cast(buffer), size); } -std::vector Stream::ReadAll() { - std::vector buffer; - buffer.resize(GetSize()); - Read(buffer.data(), 0, buffer.size()); +Buffer Stream::ReadToEnd(Index grow_size) { + Buffer buffer(grow_size); + while (true) { + auto read = Read(buffer.GetUsedEndPtr(), buffer.GetBackFree()); + if (read == 0) { + break; + } + if (buffer.IsUsedReachEnd()) { + buffer.ResizeBuffer(buffer.GetBufferSize() + grow_size, true); + } + } return buffer; } -String Stream::ReadAllAsString() { - auto buffer = ReadAll(); - return String::FromUtf8(reinterpret_cast(buffer.data()), - buffer.size()); +String Stream::ReadToEndAsUtf8String() { + auto buffer = ReadToEnd(); + return String::FromUtf8(buffer); } void Stream::Flush() {} -- cgit v1.2.3