roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
ringpipe_output_stream.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace roo_io {
7
8/// `OutputStream` adapter that writes to `RingPipe`.
10 public:
11 /// Creates adapter over `pipe`.
12 explicit RingPipeOutputStream(RingPipe& pipe) : pipe_(pipe) {}
13
14 /// Writes to ring pipe.
15 ///
16 /// Updates status indirectly (as observed via `status()`).
17 ///
18 /// @return Number of bytes written.
19 size_t write(const byte* data, size_t len) override {
20 return pipe_.write(data, len);
21 }
22
23 /// Non-blocking write to ring pipe.
24 ///
25 /// Updates status indirectly (as observed via `status()`).
26 ///
27 /// @return Number of bytes written.
28 size_t tryWrite(const byte* data, size_t len) override {
29 return pipe_.tryWrite(data, len);
30 }
31
32 /// Returns currently writable byte count.
33 ///
34 /// @return Bytes writable without blocking.
35 size_t availableForWrite() const { return pipe_.availableForWrite(); }
36
37 /// Returns current output-end status of underlying pipe.
38 ///
39 /// @return Current status.
40 Status status() const override { return pipe_.outputStatus(); }
41
42 /// Closes output end of underlying pipe.
43 ///
44 /// Updates status as observed via subsequent `status()` calls.
45 void close() override { pipe_.closeOutput(); }
46
47 private:
48 RingPipe& pipe_;
49};
50
51} // namespace roo_io
Virtualizes access to writable sinks (files, memory, devices).
OutputStream adapter that writes to RingPipe.
size_t availableForWrite() const
Returns currently writable byte count.
size_t write(const byte *data, size_t len) override
Writes to ring pipe.
RingPipeOutputStream(RingPipe &pipe)
Creates adapter over pipe.
Status status() const override
Returns current output-end status of underlying pipe.
size_t tryWrite(const byte *data, size_t len) override
Non-blocking write to ring pipe.
void close() override
Closes output end of underlying pipe.
size_t write(const byte *data, size_t len)
Definition ringpipe.cpp:8
size_t tryWrite(const byte *data, size_t len)
Definition ringpipe.cpp:38
Status outputStatus() const
Definition ringpipe.cpp:88
size_t availableForWrite()
Definition ringpipe.cpp:33
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
Status
Definition status.h:7