Bytestream Class Reference

An abstraction of a single bytestream. More...

#include <bytestream.h>

Inherited by InBandBytestream, and SOCKS5Bytestream.

List of all members.

Public Types

enum  StreamType { S5B, IBB }

Public Member Functions

 Bytestream (StreamType type, LogSink &logInstance, const JID &initiator, const JID &target, const std::string &sid)
virtual ~Bytestream ()
bool isOpen () const
virtual bool connect ()=0
virtual void close ()=0
virtual bool send (const std::string &data)=0
virtual ConnectionError recv (int timeout=-1)=0
const std::string & sid () const
StreamType type () const
const JIDtarget () const
const JIDinitiator () const
void registerBytestreamDataHandler (BytestreamDataHandler *bdh)
void removeBytestreamDataHandler ()

Protected Attributes

BytestreamDataHandlerm_handler
const LogSinkm_logInstance
const JID m_initiator
const JID m_target
StreamType m_type
std::string m_sid
bool m_open

Detailed Description

An abstraction of a single bytestream.

Used as a base class for InBand Bytestreams as well as SOCKS5 Bytestreams. You should not need to use this class directly.

Author:
Jakob Schroeter <js@camaya.net>
Since:
1.0

Definition at line 36 of file bytestream.h.


Member Enumeration Documentation

enum StreamType

Available stream types.

Enumerator:
S5B 

SOCKS5 Bytestream

IBB 

In-Band Bytestream

Definition at line 42 of file bytestream.h.


Constructor & Destructor Documentation

Bytestream ( StreamType  type,
LogSink logInstance,
const JID initiator,
const JID target,
const std::string &  sid 
) [inline]

Creates a new Bytestream.

Parameters:
type The stream type.
logInstance A Logsink to use for logging. Obtain it from ClientBase::logInstance().
initiator The initiator of the stream (usually the sender).
target The target of the stream (usually the receiver).
sid The stream's ID.

Definition at line 56 of file bytestream.h.

virtual ~Bytestream (  )  [inline, virtual]

Virtual destructor.

Definition at line 65 of file bytestream.h.


Member Function Documentation

virtual void close (  )  [pure virtual]

Closes the bytestream.

Implemented in InBandBytestream, and SOCKS5Bytestream.

virtual bool connect (  )  [pure virtual]

This function starts the connection process.

Returns:
True if a connection to a remote entity could be established, false otherwise.
Note:
If false is returned you should pass this Bytestream object to SIProfileFT::dispose() for deletion.
Make sure you have a BytestreamDataHandler registered (using registerBytestreamDataHandler()) before calling this function.

Implemented in InBandBytestream, and SOCKS5Bytestream.

const JID& initiator (  )  const [inline]

Returns the initiating entity's JID. If this bytestream is remote-initiated, this is the remote entity's JID. If it is local-initiated, this is the local JID.

Returns:
The initiator's JID.

Definition at line 134 of file bytestream.h.

bool isOpen (  )  const [inline]

Returns whether the bytestream is open, that is, accepted by both parties and ready to send/receive data.

Returns:
Whether or not the bytestream is open.

Definition at line 72 of file bytestream.h.

virtual ConnectionError recv ( int  timeout = -1  )  [pure virtual]

Call this function repeatedly to receive data. You should even do this if you use the bytestream to merely send data. May be a NOOP, depending on the actual stream type.

Parameters:
timeout The timeout to use for select in microseconds. Default of -1 means blocking.
Returns:
The state of the connection.

Implemented in InBandBytestream, and SOCKS5Bytestream.

void registerBytestreamDataHandler ( BytestreamDataHandler bdh  )  [inline]

Use this function to register an object that will receive any notifications from the Bytestream instance. Only one BytestreamDataHandler can be registered at any one time.

Parameters:
bdh The BytestreamDataHandler-derived object to receive notifications.

Definition at line 142 of file bytestream.h.

void removeBytestreamDataHandler (  )  [inline]

Removes the registered BytestreamDataHandler.

Definition at line 148 of file bytestream.h.

virtual bool send ( const std::string &  data  )  [pure virtual]

Use this function to send a chunk of data over an open bytestream. If the stream is not open or has been closed again (by the remote entity or locally), nothing is sent and false is returned. This function does any base64 encoding for you, if necessary.

Parameters:
data The block of data to send.
Returns:
True if the data has been sent (no guarantee of receipt), false in case of an error.

Implemented in InBandBytestream, and SOCKS5Bytestream.

const std::string& sid (  )  const [inline]

Lets you retrieve the stream's ID.

Returns:
The stream's ID.

Definition at line 114 of file bytestream.h.

const JID& target (  )  const [inline]

Returns the target entity's JID. If this bytestream is remote-initiated, this is the local JID. If it is local-initiated, this is the remote entity's JID.

Returns:
The target's JID.

Definition at line 127 of file bytestream.h.

StreamType type (  )  const [inline]

Returns the stream's type.

Returns:
The stream's type.

Definition at line 120 of file bytestream.h.


Member Data Documentation

A handler for incoming data and open/close events.

Definition at line 153 of file bytestream.h.

const JID m_initiator [protected]

The initiator's JID.

Definition at line 159 of file bytestream.h.

const LogSink& m_logInstance [protected]

A LogSink instance to use for logging.

Definition at line 156 of file bytestream.h.

bool m_open [protected]

Indicates whether or not the stream is open.

Definition at line 171 of file bytestream.h.

std::string m_sid [protected]

The stream ID.

Definition at line 168 of file bytestream.h.

const JID m_target [protected]

The target's JID.

Definition at line 162 of file bytestream.h.

StreamType m_type [protected]

The stream type.

Definition at line 165 of file bytestream.h.


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

Generated by  doxygen 1.6.2