1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:17:34 +00:00

LibCore: Add Stream::read_all()

This commit is contained in:
Michiel Visser 2022-04-05 21:17:38 +02:00 committed by Andreas Kling
parent af50b0363b
commit 68772463cb
2 changed files with 17 additions and 0 deletions

View file

@ -47,6 +47,22 @@ bool Stream::read_or_error(Bytes buffer)
return true; return true;
} }
ErrorOr<ByteBuffer> 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) bool Stream::write_or_error(ReadonlyBytes buffer)
{ {
VERIFY(buffer.size()); VERIFY(buffer.size());

View file

@ -37,6 +37,7 @@ public:
/// Tries to fill the entire buffer through reading. Returns whether the /// Tries to fill the entire buffer through reading. Returns whether the
/// buffer was filled without an error. /// buffer was filled without an error.
virtual bool read_or_error(Bytes); virtual bool read_or_error(Bytes);
ErrorOr<ByteBuffer> read_all();
virtual bool is_writable() const { return false; } virtual bool is_writable() const { return false; }
/// Tries to write the entire contents of the buffer. It is possible for /// Tries to write the entire contents of the buffer. It is possible for