Yate
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

Stream Class Reference

An abstract stream class capable of reading and writing. More...

#include <yateclass.h>

Inheritance diagram for Stream:
File MemoryStream Socket

List of all members.

Public Types

enum  SeekPos { SeekBegin, SeekEnd, SeekCurrent }

Public Member Functions

virtual ~Stream ()
int error () const
virtual bool terminate ()=0
virtual bool canRetry () const
virtual bool valid () const =0
virtual bool setBlocking (bool block=true)
virtual int writeData (const void *buffer, int length)=0
int writeData (const char *str)
int writeData (const String &str)
int writeData (const DataBlock &buf)
virtual int readData (void *buffer, int length)=0
virtual int64_t length ()
virtual int64_t seek (SeekPos pos, int64_t offset=0)
int64_t seek (int64_t offset)

Static Public Member Functions

static bool allocPipe (Stream *&reader, Stream *&writer)
static bool allocPair (Stream *&str1, Stream *&str2)
static bool supportsPipes ()
static bool supportsPairs ()

Protected Member Functions

 Stream ()
void clearError ()

Protected Attributes

int m_error

Detailed Description

An abstract stream class capable of reading and writing.

Base class for encapsulating system dependent stream capable objects


Member Enumeration Documentation

enum SeekPos

Enumerate seek start position


Constructor & Destructor Documentation

virtual ~Stream ( ) [virtual]

Destructor, terminates the stream

Stream ( ) [inline, protected]

Default constructor


Member Function Documentation

static bool allocPair ( Stream *&  str1,
Stream *&  str2 
) [static]

Allocate a new pair of bidirectionally connected streams

Parameters:
str1Reference of a pointer receiving the newly allocated 1st end of the pair
str2Reference of a pointer receiving the newly allocated 2nd end of the pair
Returns:
True is the stream pair was created successfully
static bool allocPipe ( Stream *&  reader,
Stream *&  writer 
) [static]

Allocate a new pair of unidirectionally pipe connected streams

Parameters:
readerReference of a pointer receiving the newly allocated reading side of the pipe
writerReference of a pointer receiving the newly allocated writing side of the pipe
Returns:
True is the stream pipe was created successfully
virtual bool canRetry ( ) const [virtual]

Check if the last error code indicates a retryable condition

Returns:
True if error was temporary and operation should be retried

Reimplemented in File, and Socket.

void clearError ( ) [inline, protected]

Clear the last error code

int error ( ) const [inline]

Get the error code of the last operation on this stream

Returns:
Error code generated by the last operation on this stream
virtual int64_t length ( ) [virtual]

Find the length of the stream if it has one

Returns:
Length of the stream or zero if length is not defined

Reimplemented in MemoryStream, and File.

virtual int readData ( void *  buffer,
int  length 
) [pure virtual]

Receive data from a connected stream

Parameters:
bufferBuffer for data transfer
lengthLength of the buffer
Returns:
Number of bytes transferred, negative if an error occurred

Implemented in MemoryStream, File, and Socket.

virtual int64_t seek ( SeekPos  pos,
int64_t  offset = 0 
) [virtual]

Set the stream read/write pointer

Parameters:
posThe seek start as enumeration
offsetThe number of bytes to move the pointer from starting position
Returns:
The new position of the stream read/write pointer. Negative on failure

Reimplemented in MemoryStream, and File.

int64_t seek ( int64_t  offset) [inline]

Set the read/write pointer from begin of stream

Parameters:
offsetThe position in stream to move the pointer
Returns:
The new position of the stream read/write pointer. Negative on failure

References Stream::seek().

Referenced by Stream::seek().

virtual bool setBlocking ( bool  block = true) [virtual]

Set the blocking or non-blocking operation mode of the stream

Parameters:
blockTrue if I/O operations should block, false for non-blocking
Returns:
True if operation was successfull, false if an error occured

Reimplemented in File, and Socket.

static bool supportsPairs ( ) [static]

Check if operating system supports bidirectional stream pairs

Returns:
True if bidirectional pairs can be created
static bool supportsPipes ( ) [static]

Check if operating system supports unidirectional stream pairs

Returns:
True if unidirectional pipes can be created
virtual bool terminate ( ) [pure virtual]

Closes the stream

Returns:
True if the stream was (already) closed, false if an error occured

Implemented in MemoryStream, File, and Socket.

virtual bool valid ( ) const [pure virtual]

Check if this stream is valid

Returns:
True if the stream is valid, false if it's invalid or closed

Implemented in MemoryStream, File, and Socket.

int writeData ( const DataBlock buf) [inline]

Write a Data block to a connected stream

Parameters:
bufDataBlock to send over the stream
Returns:
Number of bytes transferred, negative if an error occurred

References DataBlock::data(), DataBlock::length(), and Stream::writeData().

Referenced by Stream::writeData().

int writeData ( const String str) [inline]

Write a String to a connected stream

Parameters:
strString to send over the stream
Returns:
Number of bytes transferred, negative if an error occurred

References String::c_str(), String::length(), and Stream::writeData().

Referenced by Stream::writeData().

virtual int writeData ( const void *  buffer,
int  length 
) [pure virtual]

Write data to a connected stream

Parameters:
bufferBuffer for data transfer
lengthLength of the buffer
Returns:
Number of bytes transferred, negative if an error occurred

Implemented in MemoryStream, File, and Socket.

int writeData ( const char *  str)

Write a C string to a connected stream

Parameters:
strString to send over the stream
Returns:
Number of bytes transferred, negative if an error occurred

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