roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
ringpipe_input_stream.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace roo_io {
7
8/// `InputStream` adapter that reads from `RingPipe`.
10 public:
11 /// Creates adapter over `pipe`.
12 explicit RingPipeInputStream(RingPipe& pipe) : pipe_(pipe) {}
13
14 /// Reads from ring pipe.
15 ///
16 /// Updates status indirectly (as observed via `status()`).
17 ///
18 /// @return Number of bytes read.
19 size_t read(byte* data, size_t len) override { return pipe_.read(data, len); }
20
21 /// Non-blocking read from ring pipe.
22 ///
23 /// Updates status indirectly (as observed via `status()`).
24 ///
25 /// @return Number of bytes read.
26 size_t tryRead(byte* data, size_t len) override {
27 return pipe_.tryRead(data, len);
28 }
29
30 /// Returns currently readable byte count.
31 ///
32 /// @return Bytes readable without blocking.
33 size_t available() const { return pipe_.availableForRead(); }
34
35 /// Returns current input-end status of underlying pipe.
36 ///
37 /// @return Current status.
38 Status status() const override { return pipe_.inputStatus(); }
39
40 /// Closes input end of underlying pipe.
41 ///
42 /// Updates status as observed via subsequent `status()` calls.
43 void close() override { pipe_.closeInput(); }
44
45 private:
46 RingPipe& pipe_;
47};
48
49} // namespace roo_io
Virtualizes access to files, memory, and other readable sources.
InputStream adapter that reads from RingPipe.
RingPipeInputStream(RingPipe &pipe)
Creates adapter over pipe.
void close() override
Closes input end of underlying pipe.
size_t available() const
Returns currently readable byte count.
Status status() const override
Returns current input-end status of underlying pipe.
size_t read(byte *data, size_t len) override
Reads from ring pipe.
size_t tryRead(byte *data, size_t len) override
Non-blocking read from ring pipe.
size_t tryRead(byte *data, size_t len)
Definition ringpipe.cpp:67
Status inputStatus() const
Definition ringpipe.cpp:77
size_t availableForRead()
Definition ringpipe.cpp:62
size_t read(byte *data, size_t len)
Definition ringpipe.cpp:48
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8
Status
Definition status.h:7