109 bool is_open()
const override {
return handle_ !=
nullptr; }
118 void* handle_ =
nullptr;
132 void close()
override { open_ =
false; }
133 bool is_open()
const override {
return open_; }
136 const std::vector<std::uint8_t>&
buffer()
const {
return buffer_; }
144 std::size_t
size()
const {
return buffer_.size(); }
148 std::vector<std::uint8_t> buffer_;
149 std::size_t read_pos_ = 0;
175 std::unique_ptr<NamedPipe> pipe_;
StreamResult read(std::uint8_t *buffer, std::size_t size) override
Read up to size bytes into buffer.
void close() override
Close the stream. Idempotent.
Mode
Definition stream.hpp:94
@ Write
Definition stream.hpp:94
@ Append
Definition stream.hpp:94
@ ReadWrite
Definition stream.hpp:94
@ Read
Definition stream.hpp:94
bool is_open() const override
True while the stream is usable for read/write.
Definition stream.hpp:109
bool flush()
Flush OS-level buffers to the underlying file.
FileStream(FileStream &&other) noexcept
FileStream(std::string_view path, Mode mode=Mode::Read)
StreamResult write(const std::uint8_t *buffer, std::size_t size) override
Write up to size bytes from buffer.
bool open(std::string_view path, Mode mode=Mode::Read)
Open path with the given mode. Returns true on success.
std::size_t position() const
Current byte position, or (size_t)-1 on error.
FileStream & operator=(FileStream &&other) noexcept
const std::vector< std::uint8_t > & buffer() const
Byte content currently in the stream (for inspection in tests).
Definition stream.hpp:136
StreamResult read(std::uint8_t *buffer, std::size_t size) override
Read up to size bytes into buffer.
void close() override
Close the stream. Idempotent.
Definition stream.hpp:132
bool is_open() const override
True while the stream is usable for read/write.
Definition stream.hpp:133
std::size_t size() const
Definition stream.hpp:144
MemoryStream(std::vector< std::uint8_t > initial)
Pre-fill the stream with existing bytes (copied in).
std::size_t read_position() const
Definition stream.hpp:145
StreamResult write(const std::uint8_t *buffer, std::size_t size) override
Write up to size bytes from buffer.
void rewind()
Reset the read cursor to the start.
Definition stream.hpp:139
void clear()
Clear all data and rewind.
Definition named_pipe.hpp:15
Wrap a value as a success result.
Definition result.hpp:42
bool is_open() const override
True while the stream is usable for read/write.
StreamResult write(const std::uint8_t *buffer, std::size_t size) override
Write up to size bytes from buffer.
PipeStream(PipeStream &&) noexcept
StreamResult read(std::uint8_t *buffer, std::size_t size) override
Read up to size bytes into buffer.
void close() override
Close the stream. Idempotent.
NamedPipe * pipe()
Definition stream.hpp:172
PipeStream(std::unique_ptr< NamedPipe > pipe)
virtual bool is_open() const =0
True while the stream is usable for read/write.
virtual ~Stream()=default
virtual StreamResult read(std::uint8_t *buffer, std::size_t size)=0
Read up to size bytes into buffer.
Stream & operator=(const Stream &)=delete
Stream(const Stream &)=delete
virtual void close()=0
Close the stream. Idempotent.
virtual StreamResult write(const std::uint8_t *buffer, std::size_t size)=0
Write up to size bytes from buffer.
Definition generated_event_source.hpp:33
StreamError
High-level error classification for Stream operations.
Definition stream.hpp:31
@ Closed
End-of-stream / peer closed / stream not open.
Definition stream.hpp:33
@ Invalid
Invalid argument or invalid state (e.g., read after close).
Definition stream.hpp:36
@ Ok
No error; bytes is authoritative.
Definition stream.hpp:32
@ WouldBlock
No data available now; try again later.
Definition stream.hpp:34
@ IoError
OS-level I/O failure (errno/GetLastError set by the backend).
Definition stream.hpp:35
@ other
Definition udev_monitor.hpp:26
Result of a Stream read/write.
Definition stream.hpp:45
std::size_t bytes
Definition stream.hpp:46
constexpr bool would_block() const
Definition stream.hpp:50
constexpr bool ok() const
Definition stream.hpp:49
static constexpr StreamResult fail(StreamError e)
Definition stream.hpp:54
static constexpr StreamResult make(std::size_t n)
Definition stream.hpp:53
StreamError error
Definition stream.hpp:47
constexpr bool closed() const
Definition stream.hpp:51