PPTClient Class Reference

#include <PPTClient.h>

Inheritance diagram for PPTClient:

Inheritance graph
[legend]
Collaboration diagram for PPTClient:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 PPTClient (const string &hostStr, int portVal, int timeout)
 PPTClient (const string &unix_socket, int timeout)
 ~PPTClient ()
virtual void initConnection ()
virtual void closeConnection ()
virtual void dump (ostream &strm) const
 dumps information about this object
virtual void send (const string &buffer, map< string, string > &extensions)
 Send a message to the server.
virtual bool receive (map< string, string > &extensions, ostream *strm=0)
 receive a chunk of either extensions into the specified map or data into the specified stream
virtual string exit ()
virtual void sendExtensions (map< string, string > &extensions)
 send the specified extensions
virtual void sendExit ()
 Send the exit token as an extension.
virtual SocketgetSocket ()
virtual bool isConnected ()
virtual void setOutputStream (ostream *strm)
virtual ostream * getOutputStream ()
virtual void brokenPipe ()

Protected Member Functions

virtual int readBuffer (char *inBuff, unsigned int buff_size)
 read a buffer of data from the socket
virtual int readBufferNonBlocking (char *inBuff)
 read a buffer of data from the socket without blocking
virtual void send (const string &buffer)
 sends the buffer to the socket
virtual void sendChunk (const string &buffer, map< string, string > &extensions)
 Send a chunk to the server.
virtual void read_extensions (map< string, string > &extensions, const string &xstr)
 the string passed are extensions, read them and store the name/value pairs into the passed map
virtual void receive (ostream &strm, unsigned short len)
 receive from the socket the number of bytes specified until done

Protected Attributes

Socket_mySock
ostream * _out
bool _brokenPipe

Constructor & Destructor Documentation

PPTClient::PPTClient ( const string &  hostStr,
int  portVal,
int  timeout 
)

PPTClient::PPTClient ( const string &  unix_socket,
int  timeout 
)

PPTClient::~PPTClient (  ) 


Member Function Documentation

virtual void Connection::brokenPipe (  )  [inline, virtual, inherited]

void PPTClient::closeConnection (  )  [virtual]

Implements PPTConnection.

void PPTClient::dump ( ostream &  strm  )  const [virtual]

dumps information about this object

Displays the pointer value of this instance

Parameters:
strm C++ i/o stream to dump the information to

Reimplemented from PPTConnection.

virtual string PPTConnection::exit (  )  [inline, virtual, inherited]

Implements Connection.

virtual ostream* Connection::getOutputStream (  )  [inline, virtual, inherited]

virtual Socket* Connection::getSocket (  )  [inline, virtual, inherited]

void PPTClient::initConnection (  )  [virtual]

Implements PPTConnection.

virtual bool Connection::isConnected (  )  [inline, virtual, inherited]

Here is the call graph for this function:

void PPTConnection::read_extensions ( map< string, string > &  extensions,
const string &  xstr 
) [protected, virtual, inherited]

the string passed are extensions, read them and store the name/value pairs into the passed map

It has already been determined that extensions were read in the chunk. Deconstruct the name/value pairs and store them into the map passed. Each extension ends with a semicolon.

Parameters:
extensions map to store the name/value pairs in
xstr string of extensions in the form *(name[=value];)

int PPTConnection::readBuffer ( char *  buffer,
unsigned int  buffer_size 
) [protected, virtual, inherited]

read a buffer of data from the socket

Parameters:
buffer buffer to store the data received from the socket in
buffer_size max size of the data to be received
Returns:
number of bytes actually read

int PPTConnection::readBufferNonBlocking ( char *  inBuff  )  [protected, virtual, inherited]

read a buffer of data from the socket without blocking

Try to read a buffer of data without blocking. We will try _timeout times, waiting 1000 milliseconds between each try. The variable _timeout is passed into the constructor.

Parameters:
inBuff buffer to store the data into
Returns:
number of bytes read in, -1 if failed to read anything

bool PPTConnection::receive ( map< string, string > &  extensions,
ostream *  strm = 0 
) [virtual, inherited]

receive a chunk of either extensions into the specified map or data into the specified stream

This receive will read a chunk of information from the socket and determine if what is read are extensions, where they are stored in the extensions map passed, or data, which is written to the specified stream

The first 4 bytes is the length of the information that was passed. The 5th character is either the character 'x', signifying that extensions were sent, or 'd', signifying that data was sent.

Parameters:
extensions map to store the name/value paris into
strm output stream to write the received data into
Returns:
true if what was received is the last chunk, false otherwise

Implements Connection.

void PPTConnection::receive ( ostream &  strm,
unsigned short  len 
) [protected, virtual, inherited]

receive from the socket the number of bytes specified until done

This method receives data from the socket until there is nothing more to be read

Parameters:
strm output stream to write what is received to
len number of bytes remaining to be read

void PPTConnection::send ( const string &  buffer,
map< string, string > &  extensions 
) [virtual, inherited]

Send a message to the server.

Sends the specified message buffer to the server followed by a buffer of length 0 to signify the end of the message

A buffer sent to the server will follow the following form:

       Chunked-Body   = chunk-extensions
                        chunk
                        last-chunk

       chunk-extensions= chunk-size 'x' *( chunk-ext-name [ "=" chunk-ext-val ] ;
       chunk          = chunk-size 'd' chunk-data
       chunk-size     = 4HEX
       last-chunk     = 4("0") d

       chunk-ext-name = token
       chunk-ext-val  = token | quoted-string
       chunk-data     = chunk-size(OCTET)

If there are extensions then they are sent first. The length of the extensions is sent first, followed by the character 'x', and then the extensions in the format name[=value];

Then the buffer itself is sent. The length of the buffer is sent followed by the character 'd' signifying data is being transmitted.

if the buffer is empty then this represents the last chunk

Parameters:
buffer buffer of data to send
extensions list of name/value pairs sent

Implements Connection.

void PPTConnection::send ( const string &  buffer  )  [protected, virtual, inherited]

sends the buffer to the socket

the buffer includes the length, extensions, data, whatever is to be sent

Parameters:
buffer data buffer to send to the socket

Implements Connection.

void PPTConnection::sendChunk ( const string &  buffer,
map< string, string > &  extensions 
) [protected, virtual, inherited]

Send a chunk to the server.

A chunk is either the chunk with the data or the last-chunk

Parameters:
buffer The data buffer to send
extensions name/value pairs to send
See also:
PPTConnection::send

Implements Connection.

void PPTConnection::sendExit (  )  [virtual, inherited]

Send the exit token as an extension.

Implements Connection.

void PPTConnection::sendExtensions ( map< string, string > &  extensions  )  [virtual, inherited]

send the specified extensions

Parameters:
extensions name/value paris to be sent

Implements Connection.

virtual void Connection::setOutputStream ( ostream *  strm  )  [inline, virtual, inherited]


Member Data Documentation

bool Connection::_brokenPipe [protected, inherited]

Socket* Connection::_mySock [protected, inherited]

ostream* Connection::_out [protected, inherited]


The documentation for this class was generated from the following files:
Generated on Fri Apr 11 15:15:49 2008 for OPeNDAP Back End Server (BES) by  doxygen 1.4.7