roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
roo_io::OutputStream Class Referenceabstract

Virtualizes access to writable sinks (files, memory, devices). More...

#include <output_stream.h>

Inheritance diagram for roo_io::OutputStream:
[legend]

Public Member Functions

virtual ~OutputStream ()
 
bool isOpen () const
 Returns whether stream is considered open.
 
virtual void close ()
 Flushes and closes this stream.
 
virtual size_t write (const byte *buf, size_t count)=0
 Attempts to write up to count bytes from buf.
 
virtual size_t tryWrite (const byte *buf, size_t count)
 Attempts to write without indefinite blocking.
 
virtual size_t writeFully (const byte *buf, size_t count)
 Attempts to write count bytes from buf.
 
virtual void flush ()
 Flushes buffered data to the underlying sink.
 
virtual Status status () const =0
 Returns underlying stream status.
 

Detailed Description

Virtualizes access to writable sinks (files, memory, devices).

Represents an open writable resource.

For iterator-style writes, prefer BufferedOutputStreamIterator to reduce virtual-call overhead per byte.

Definition at line 16 of file output_stream.h.

Constructor & Destructor Documentation

◆ ~OutputStream()

virtual roo_io::OutputStream::~OutputStream ( )
inlinevirtual

Definition at line 18 of file output_stream.h.

References close().

Member Function Documentation

◆ close()

virtual void roo_io::OutputStream::close ( )
inlinevirtual

Flushes and closes this stream.

On success, if status was kOk, status transitions to kClosed. On failure, status reflects encountered error.

Reimplemented in roo_io::NullOutputStream, roo_io::MemoryOutputStream< PtrType >, and roo_io::RingPipeOutputStream.

Definition at line 29 of file output_stream.h.

References flush().

Referenced by roo_io::OutputStreamWriter::close(), roo_io::OutputStreamWriter::reset(), roo_io::OutputStreamWriter::reset(), and ~OutputStream().

◆ flush()

virtual void roo_io::OutputStream::flush ( )
inlinevirtual

Flushes buffered data to the underlying sink.

May update status(). Stream is also flushed on destruction.

Definition at line 92 of file output_stream.h.

Referenced by close(), and roo_io::BufferedOutputStreamIterator::flush().

◆ isOpen()

bool roo_io::OutputStream::isOpen ( ) const
inline

Returns whether stream is considered open.

Returns
true when status() is kOk.

Definition at line 23 of file output_stream.h.

References roo_io::kOk, and status().

◆ status()

virtual Status roo_io::OutputStream::status ( ) const
pure virtual

Returns underlying stream status.

Updated by write/flush operations. Status is either kOk or an error (never kEndOfStream).

Implemented in roo_io::NullOutputStream, roo_io::MemoryOutputStream< PtrType >, and roo_io::RingPipeOutputStream.

Referenced by roo_io::BufferedOutputStreamIterator::flush(), isOpen(), and roo_io::BufferedOutputStreamIterator::write().

◆ tryWrite()

virtual size_t roo_io::OutputStream::tryWrite ( const byte buf,
size_t  count 
)
inlinevirtual

Attempts to write without indefinite blocking.

Updates status.

Similar to write(), but may return zero on success if forward progress would require unacceptable blocking.

Repeated tryWrite() calls make forward progress without requiring fallback to write().

Returns
Number of bytes written.

Reimplemented in roo_io::RingPipeOutputStream.

Definition at line 59 of file output_stream.h.

References roo_io::count, and write().

◆ write()

virtual size_t roo_io::OutputStream::write ( const byte buf,
size_t  count 
)
pure virtual

Attempts to write up to count bytes from buf.

Updates status.

Contract:

  • On success (status() == kOk), returns at least one byte.
  • On error, may return zero or number of bytes written before failure.

If pre-call status is not kOk, call should have no effect and return zero.

Successful return does not guarantee data reached final sink until flush() succeeds.

Returns
Number of bytes written.

Implemented in roo_io::NullOutputStream, roo_io::MemoryOutputStream< PtrType >, and roo_io::RingPipeOutputStream.

Referenced by tryWrite(), roo_io::BufferedOutputStreamIterator::write(), and writeFully().

◆ writeFully()

virtual size_t roo_io::OutputStream::writeFully ( const byte buf,
size_t  count 
)
inlinevirtual

Attempts to write count bytes from buf.

Updates status via write() calls.

Unlike write(), this method keeps writing until either:

  • all count bytes are written, or
  • an error occurs.

If pre-call status is not kOk, this method returns zero and leaves status unchanged.

Successful write still may be buffered; call flush() to force sink I/O.

Returns
Total bytes written.

Definition at line 77 of file output_stream.h.

References roo_io::count, and write().


The documentation for this class was generated from the following file: