ucc::pipestream Class Reference

Streamable tcp connection between client and server. More...

#include <stream.h>

Inherits std::streambuf, and std::iostream.

Collaboration diagram for ucc::pipestream:
Collaboration graph
[legend]

Public Types

enum  access_t { RDONLY, WRONLY, RDWR }

Public Member Functions

void close (void)
 Close an active stream connection.
void open (char *command, access_t access, char **env=((void *) 0), size_t buffering=512)
 Open a stream connection to a pipe service.
 operator bool ()
 See if stream connection is active.
bool operator! ()
 See if stream is disconnected.
 pipestream (char *command, access_t access, char **env=((void *) 0), size_t size=512)
 Create child process and start pipe.
 pipestream ()
 Create an unopened pipe stream.
int sync (void)
 Flush the stream input and output buffers, writes pending output.
void terminate (void)
 Force terminate child and close.
virtual ~pipestream ()
 Destroy a pipe stream.

Protected Member Functions

int overflow (int ch)
 This streambuf method is used to write the output buffer through the established pipe connection.
void release (void)
 Release the stream, detach/do not wait for the process.
int uflow ()
 This streambuf method is used for doing unbuffered reads through the establish tcp socket connection when in interactive mode.
int underflow ()
 This streambuf method is used to load the input buffer through the established pipe connection.

Protected Attributes

size_t bufsize
char * gbuf
char * pbuf
pid_t pid
fsys_t rd
fsys_t wr

Detailed Description

Streamable tcp connection between client and server.

The tcp stream class can represent a client connection to a server or an instance of a service generated by a tcp listener. As a stream class, data can be manipulated using the << and >> operators.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 175 of file stream.h.


Constructor & Destructor Documentation

ucc::pipestream::pipestream ( char *  command,
access_t  access,
char **  env = ((void *) 0),
size_t  size = 512 
)

Create child process and start pipe.

Parameters:
command to pass.
access mode of pipe stream.
env to create in child.
size of buffer.

Member Function Documentation

void ucc::pipestream::close ( void   ) 

Close an active stream connection.

This waits for the child to terminate.

void ucc::pipestream::open ( char *  command,
access_t  access,
char **  env = ((void *) 0),
size_t  buffering = 512 
)

Open a stream connection to a pipe service.

Parameters:
command to execute.
access mode of stream.
env to create in child process.
buffering size to use.
ucc::pipestream::operator bool (  )  [inline]

See if stream connection is active.

Returns:
true if stream is active.

Definition at line 249 of file stream.h.

bool ucc::pipestream::operator! (  )  [inline]

See if stream is disconnected.

Returns:
true if stream disconnected.

Definition at line 256 of file stream.h.

int ucc::pipestream::overflow ( int  ch  )  [protected]

This streambuf method is used to write the output buffer through the established pipe connection.

Parameters:
ch char to push through.
Returns:
char pushed through.
int ucc::pipestream::sync ( void   ) 

Flush the stream input and output buffers, writes pending output.

Returns:
0 on success, or error code.
int ucc::pipestream::uflow (  )  [protected]

This streambuf method is used for doing unbuffered reads through the establish tcp socket connection when in interactive mode.

Also this method will handle proper use of buffers if not in interative mode.

Returns:
char from pipe connection, EOF if not connected.
int ucc::pipestream::underflow (  )  [protected]

This streambuf method is used to load the input buffer through the established pipe connection.

Returns:
char from get buffer, EOF if not connected.

The documentation for this class was generated from the following file:
Generated by  doxygen 1.6.2-20100208