CoreComponents 3.0.0
A Modern C++ Toolkit
Loading...
Searching...
No Matches
Stream Class Reference

Abstract data stream. More...

#include <cc/Stream>

Inheritance diagram for Stream:

Classes

struct  State
 Internal state. More...
 

Public Member Functions

 Stream ()=default
 Create a null stream.
 
bool waitEstablished (int timeout=-1)
 Wait until the connection is fully established.
 
bool wait (IoEvent event, int timeout=-1)
 Wait for an I/O event.
 
long read (Out< Bytes > buffer, long maxFill=-1)
 Read available bytes into buffer and return number of bytes read.
 
void write (const Bytes &buffer, long fill=-1)
 Write fill bytes from buffer (if fill < 0 write all bytes from buffer)
 
void write (const List< Bytes > &buffers)
 Write the contents of buffers in one go.
 
void write (const List< String > &parts)
 Convenience method, equivalent to 'write(parts.join())'.
 
void write (const struct iovec *iov, int iovcnt)
 Write the contents of the iov buffers in one go.
 
void write (const char *s)
 Write C-string s.
 
bool isDiscarding () const
 Return true if this stream is discarding all writes
 
long long transferTo (const Stream &sink, long long count, const Bytes &buffer)
 Transfer a span of bytes.
 
long long transferTo (const Stream &sink, long long count=-1)
 Transfer a span of bytes.
 
long defaultTransferUnit () const
 Default I/O buffer size.
 
long long skip (long long count)
 Read and discard count bytes.
 
void drain (const Bytes &auxBuffer=Bytes{})
 Read everything that is left.
 
long readSpan (Out< Bytes > buffer)
 Read fixed number of bytes.
 
String readSpan (long count)
 Read a fixed number of bytes.
 
String readAll ()
 Read the entire stream.
 
- Public Member Functions inherited from Object
 Object ()=default
 Create a null object.
 
 operator bool () const
 Check if this is a non-null object.
 
bool isNull () const
 Check if this is a null object.
 
template<class T >
bool is () const
 Check if this object is of type T.
 
template<class T >
as () const
 Cast this object to type T.
 
bool isWeak () const
 Check if the underlying object reference is weak.
 
bool operator== (const Object &other) const
 Equality operator.
 
std::strong_ordering operator<=> (const Object &other) const
 Ordering operator.
 
long useCount () const
 Reference count.
 

Protected Member Functions

 Stream (State *newState)
 
Stateme ()
 
const Stateme () const
 
- Protected Member Functions inherited from Object
template<class T >
weak () const
 
template<class T >
void initOnce ()
 Create the object state when called the first time.
 
template<class T >
void initOncePerThread ()
 Create a distinct object state for each thread when called the first time in that thread.
 
 Object (State *newState)
 Initialize object with newState.
 
 Object (State *state, Alias)
 
 Object (State *state, Weak)
 
Objectoperator= (std::nullptr_t)
 

Additional Inherited Members

- Static Protected Member Functions inherited from Object
template<class T >
static T alias (const State *state)
 Create an alias object for the given state.
 
template<class T >
static T weak (const State *state)
 
- Protected Attributes inherited from Object
Handle< Stateme
 Internal object state
 

Detailed Description

Abstract data stream.

Constructor & Destructor Documentation

◆ Stream()

Stream ( )
default

Create a null stream.

Member Function Documentation

◆ waitEstablished()

bool waitEstablished ( int timeout = -1)

Wait until the connection is fully established.

Parameters
timeoutMaximum timeout to wait in milliseconds
Returns
True if connectio was established before timeout
Exceptions
SocketErrorConnection request failed

◆ wait()

bool wait ( IoEvent event,
int timeout = -1 )

Wait for an I/O event.

Parameters
eventCombination of IoEvent flags
timeoutMaximum timeout in milliseconds (or infinite if < 0)
Returns
True if one of the indicated events occured, false otherwise

◆ read()

long read ( Out< Bytes > buffer,
long maxFill = -1 )

Read available bytes into buffer and return number of bytes read.

◆ write() [1/5]

void write ( const Bytes & buffer,
long fill = -1 )

Write fill bytes from buffer (if fill < 0 write all bytes from buffer)

◆ write() [2/5]

void write ( const List< Bytes > & buffers)

Write the contents of buffers in one go.

◆ write() [3/5]

void write ( const List< String > & parts)

Convenience method, equivalent to 'write(parts.join())'.

◆ write() [4/5]

void write ( const struct iovec * iov,
int iovcnt )

Write the contents of the iov buffers in one go.

See also
writev(2)

◆ write() [5/5]

void write ( const char * s)

Write C-string s.

◆ isDiscarding()

bool isDiscarding ( ) const

Return true if this stream is discarding all writes

◆ transferTo() [1/2]

long long transferTo ( const Stream & sink,
long long count,
const Bytes & buffer )

Transfer a span of bytes.

Parameters
sinkTarget stream
countNumber of bytes to transfer (or -1 for all)
bufferAuxiliary transfer buffer
Returns
Number of bytes transferred

◆ transferTo() [2/2]

long long transferTo ( const Stream & sink,
long long count = -1 )

Transfer a span of bytes.

Parameters
sinkTarget stream
countNumber of bytes to transfer (or -1 for all)
Returns
Number of bytes transferred

◆ defaultTransferUnit()

long defaultTransferUnit ( ) const

Default I/O buffer size.

◆ skip()

long long skip ( long long count)

Read and discard count bytes.

◆ drain()

void drain ( const Bytes & auxBuffer = Bytes{})

Read everything that is left.

Parameters
auxBufferAuxiliary transfer buffer

◆ readSpan() [1/2]

long readSpan ( Out< Bytes > buffer)

Read fixed number of bytes.

Parameters
bufferTarget buffer (size of of the buffer defines span length)
Returns
Number of bytes read, which is only lower than buffer.count() on end of input

◆ readSpan() [2/2]

String readSpan ( long count)

Read a fixed number of bytes.

Parameters
countNumber of bytes to read
Returns
A String of exactly count bytes (possibly padded with zeros on end of input)

◆ readAll()

String readAll ( )

Read the entire stream.

Returns
A String comprising of all bytes read from the stream