AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
APipe Class Reference

A thread safe buffer that converts an IInputStream to IOutputStream (and otherwise). More...

#include <AUI/IO/APipe.h>

Public Member Functions

size_t read (char *dst, size_t size) override
 Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
 
void write (const char *src, size_t size) override
 Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.
 
size_t available ()
 
void close ()
 
- Public Member Functions inherited from IInputStream
size_t read (std::span< std::byte > destination)
 Reads up to destination.size() bytes from stream. Blocking (waiting for new data) is allowed.
 
void readExact (char *dst, size_t size)
 Reads exact size bytes from stream. Blocking (waiting for new data) is allowed.
 
template<typename T>
deserialize ()
 
template<typename T>
IInputStreamoperator>> (T &dst)
 
template<typename T>
IInputStreamoperator>> (T &&dst)
 
- Public Member Functions inherited from IOutputStream
template<typename T>
void write (const T &t)
 
template<typename T>
IOutputStreamoperator<< (const T &t)
 

Detailed Description

A thread safe buffer that converts an IInputStream to IOutputStream (and otherwise).

APipe is similar to the unix pipes. It's capable to store up to 65,536 bytes. It's implemented like a ring buffer. If this limit is reached, a write() method blocks thread until buffer is read from.

If capacity may be not enough, consider to use ADynamicPipe instead.

Member Function Documentation

◆ read()

size_t APipe::read ( char * dst,
size_t size )
overridevirtual

Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.

Sneaky exceptions
An implementation can throw any exception that subclasses AIOException.
Parameters
dstdestination buffer
sizedestination buffer's size. > 0
Returns
number of read bytes (including 0)

Implements IInputStream.

◆ write()

void APipe::write ( const char * src,
size_t size )
overridevirtual

Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.

Sneaky exceptions
An implementation can throw any exception that subclasses AIOException.
Parameters
srcsource buffer
sizesource buffer's size. > 0

Implements IOutputStream.


The documentation for this class was generated from the following files:
Inheritance diagram for APipe:
Collaboration diagram for APipe: