Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

SocketPort Class Reference

The socket port is an internal class which is attached to and then serviced by a specific SocketService "object". base class for realtime and thread pool serviced protocols. More...

#include <socket.h>

Inheritance diagram for SocketPort::

Socket TimerPort List of all members.

Public Methods

void setTimer (timeout_t timeout=0)
 Derived setTimer to notify the service thread pool of change in expected timeout. More...

void incTimer (timeout_t timeout)
 Derived incTimer to notify the service thread pool of a change in expected timeout. More...


Protected Methods

 SocketPort (SocketService *svc, TCPSocket &tcp)
 Construct an accepted TCP socket connection from a specific bound TCP server. More...

 SocketPort (SocketService *svc, const InetAddress &ia, tpport_t port)
 Construct a bound UDP socket for use in deriving realtime UDP streaming protocols handled by thread pool objects. More...

void Attach (SocketService *svc)
 Attach yourself to the service pool thread object. More...

virtual ~SocketPort ()
 Disconnect the socket from the service thread pool and the remote connection. More...

void setDetectPending (bool)
 Used to indicate if the service thread should monitor pending data for us. More...

bool getDetectPending (void) const
 Get the current state of the DetectPending flag. More...

void setDetectOutput (bool)
 Used to indicate if output ready monitoring should be performed by the service thread. More...

bool getDetectOutput (void) const
 Get the current state of the DetectOutput flag. More...

virtual void Expired (void)
 Called by the service thread pool when the objects timer has expired. More...

virtual void Pending (void)
 Called by the service thread pool when input data is pending for this socket. More...

virtual void Output (void)
 Called by the service thread pool when output data is pending for this socket. More...

virtual void Disconnect (void)
 Called by the service thread pool when a disconnect has occured. More...

sockerror_t Connect (const InetAddress &ia, tpport_t port)
 Connect a Socket Port to a known peer host. More...

int Send (void *buf, int len)
 Transmit "send" data to a connected peer host. More...

int Recv (void *buf, size_t len)
 Receive a message from any host. More...

int Peek (void *buf, size_t len)
 Examine the content of the next packet. More...


Friends

class SocketService

Detailed Description

The socket port is an internal class which is attached to and then serviced by a specific SocketService "object". base class for realtime and thread pool serviced protocols.

Derived versions of this class offer specific functionality for specific protocols. Both Common C++ supporting frameworks and application objects may be derived from related protocol specific base classes.

A special set of classes, "SocketPort" and "SocketService", exist for building realtime streaming media servers on top of UDP and TCP protocols. The "SocketPort" is used to hold a connected or associated TCP or UDP socket which is being "streamed" and which offers callback methods that are invoked from a "SocketService" thread. SocketService's can be pooled into logical thread pools that can service a group of SocketPorts. A millisecond accurate "timer" is associated with each SocketPort and can be used to time synchronize SocketPort I/O operations.

Author:
David Sugar <dyfet@ostel.com>


Constructor & Destructor Documentation

SocketPort::SocketPort SocketService *   svc,
TCPSocket &   tcp
[protected]
 

Construct an accepted TCP socket connection from a specific bound TCP server.

This is meant to derive advanced application specific TCP servers that can be thread pooled.

Parameters:
svc   pool thread object.
tcp   socket object to accept.

SocketPort::SocketPort SocketService *   svc,
const InetAddress &   ia,
tpport_t   port
[protected]
 

Construct a bound UDP socket for use in deriving realtime UDP streaming protocols handled by thread pool objects.

Parameters:
svc   pool thread object.
ia   address of interface to bind.
port   number to bind to.

virtual SocketPort::~SocketPort   [protected, virtual]
 

Disconnect the socket from the service thread pool and the remote connection.


Member Function Documentation

void SocketPort::Attach SocketService *   svc [protected]
 

Attach yourself to the service pool thread object.

The later version.

Parameters:
svc   pool thread object

sockerror_t SocketPort::Connect const InetAddress &   ia,
tpport_t   port
[protected]
 

Connect a Socket Port to a known peer host.

This is normally used with the UDP constructor. This is also performed as a non-blocking operation under Posix systems to prevent delays in a callback handler.

Returns:
0 if successful.
Parameters:
ia   address of remote host or subnet.
port   number of remote peer(s).

virtual void SocketPort::Disconnect void   [inline, protected, virtual]
 

Called by the service thread pool when a disconnect has occured.

virtual void SocketPort::Expired void   [inline, protected, virtual]
 

Called by the service thread pool when the objects timer has expired.

Used for timed events.

virtual void SocketPort::Output void   [inline, protected, virtual]
 

Called by the service thread pool when output data is pending for this socket.

int SocketPort::Peek void *   buf,
size_t   len
[inline, protected]
 

Examine the content of the next packet.

This can be used to build "smart" line buffering for derived TCP classes.

Parameters:
pointer   to packet buffer to examine.
len   of packet buffer to examine.
Returns:
number of bytes actually available.

virtual void SocketPort::Pending void   [inline, protected, virtual]
 

Called by the service thread pool when input data is pending for this socket.

int SocketPort::Recv void *   buf,
size_t   len
[inline, protected]
 

Receive a message from any host.

This is used in derived classes to build protocols.

Parameters:
pointer   to packet buffer to receive.
len   of packet buffer to receive.
Returns:
number of bytes received.

int SocketPort::Send void *   buf,
int   len
[inline, protected]
 

Transmit "send" data to a connected peer host.

This is not public by default since an overriding protocol is likely to be used in a derived class.

Returns:
number of bytes sent.
Parameters:
address   of buffer to send.
len   of bytes to send.

bool SocketPort::getDetectOutput void   const [inline, protected]
 

Get the current state of the DetectOutput flag.

bool SocketPort::getDetectPending void   const [inline, protected]
 

Get the current state of the DetectPending flag.

void SocketPort::incTimer timeout_t   timeout
 

Derived incTimer to notify the service thread pool of a change in expected timeout.

This allows SocketService to reschedule all timers. Otherwise same as TimerPort.

Parameters:
timeout   in milliseconds.

Reimplemented from TimerPort.

void SocketPort::setDetectOutput bool   [protected]
 

Used to indicate if output ready monitoring should be performed by the service thread.

void SocketPort::setDetectPending bool   [protected]
 

Used to indicate if the service thread should monitor pending data for us.

void SocketPort::setTimer timeout_t   timeout = 0
 

Derived setTimer to notify the service thread pool of change in expected timeout.

This allows SocketService to reschedule all timers. Otherwise same as TimerPort.

Parameters:
timeout   in milliseconds.

Reimplemented from TimerPort.


Friends And Related Function Documentation

friend class SocketService [friend]
 


The documentation for this class was generated from the following file:
Generated at Tue Nov 20 12:34:37 2001 for CommonC++ by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001