Selaa lähdekoodia

LibCore: Add `Stream::WrapInAKOutputStream`

Tim Schumacher 2 vuotta sitten
vanhempi
commit
dd948b046c
2 muutettua tiedostoa jossa 40 lisäystä ja 0 poistoa
  1. 29 0
      Userland/Libraries/LibCore/Stream.cpp
  2. 11 0
      Userland/Libraries/LibCore/Stream.h

+ 29 - 0
Userland/Libraries/LibCore/Stream.cpp

@@ -830,4 +830,33 @@ bool WrapInAKInputStream::discard_or_error(size_t count)
     return true;
     return true;
 }
 }
 
 
+WrapInAKOutputStream::WrapInAKOutputStream(Core::Stream::Stream& stream)
+    : m_stream(stream)
+{
+}
+
+size_t WrapInAKOutputStream::write(ReadonlyBytes bytes)
+{
+    if (has_any_error())
+        return 0;
+
+    auto length_or_error = m_stream.write(bytes);
+    if (length_or_error.is_error()) {
+        set_fatal_error();
+        return 0;
+    }
+
+    return length_or_error.value();
+}
+
+bool WrapInAKOutputStream::write_or_error(ReadonlyBytes bytes)
+{
+    if (write(bytes) < bytes.size()) {
+        set_fatal_error();
+        return false;
+    }
+
+    return true;
+}
+
 }
 }

+ 11 - 0
Userland/Libraries/LibCore/Stream.h

@@ -1041,4 +1041,15 @@ private:
     Core::Stream::Stream& m_stream;
     Core::Stream::Stream& m_stream;
 };
 };
 
 
+// Note: This is only a temporary hack, to break up the task of moving away from AK::Stream into smaller parts.
+class WrapInAKOutputStream final : public OutputStream {
+public:
+    WrapInAKOutputStream(Core::Stream::Stream& stream);
+    virtual size_t write(ReadonlyBytes) override;
+    virtual bool write_or_error(ReadonlyBytes) override;
+
+private:
+    Core::Stream::Stream& m_stream;
+};
+
 }
 }