From 68772463cb662975cd4dfdc232fb1be38487ad3c Mon Sep 17 00:00:00 2001 From: Michiel Visser Date: Tue, 5 Apr 2022 21:17:38 +0200 Subject: [PATCH] LibCore: Add Stream::read_all() --- Userland/Libraries/LibCore/Stream.cpp | 16 ++++++++++++++++ Userland/Libraries/LibCore/Stream.h | 1 + 2 files changed, 17 insertions(+) diff --git a/Userland/Libraries/LibCore/Stream.cpp b/Userland/Libraries/LibCore/Stream.cpp index c142bfb685..8e18320c61 100644 --- a/Userland/Libraries/LibCore/Stream.cpp +++ b/Userland/Libraries/LibCore/Stream.cpp @@ -47,6 +47,22 @@ bool Stream::read_or_error(Bytes buffer) return true; } +ErrorOr Stream::read_all() +{ + ByteBuffer output; + u8 buffer_raw[4096]; + Bytes buffer { buffer_raw, 4096 }; + + while (true) { + Bytes read_bytes = TRY(read(buffer)); + if (read_bytes.is_empty()) + break; + output.append(read_bytes); + } + + return output; +} + bool Stream::write_or_error(ReadonlyBytes buffer) { VERIFY(buffer.size()); diff --git a/Userland/Libraries/LibCore/Stream.h b/Userland/Libraries/LibCore/Stream.h index 2089fdac49..ae7aff18da 100644 --- a/Userland/Libraries/LibCore/Stream.h +++ b/Userland/Libraries/LibCore/Stream.h @@ -37,6 +37,7 @@ public: /// Tries to fill the entire buffer through reading. Returns whether the /// buffer was filled without an error. virtual bool read_or_error(Bytes); + ErrorOr read_all(); virtual bool is_writable() const { return false; } /// Tries to write the entire contents of the buffer. It is possible for