ost::SocketPort(3) | Library Functions Manual | ost::SocketPort(3) |
NAME¶
ost::SocketPort - The socket port is an internal class which is attached to and then serviced by a specific SocketService 'object'.SYNOPSIS¶
#include <socketport.h> Inherits ost::Socket, and ost::TimerPort.Public Member Functions¶
void setTimer (timeout_t timeout=0)
Protected Member Functions¶
SocketPort (SocketService *svc, TCPSocket &tcp)
Friends¶
class SocketService
Additional Inherited Members¶
Detailed Description¶
The socket port is an internal class which is attached to and then serviced by a specific SocketService 'object'. 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 base class for realtime and
thread pool serviced protocols.
Examples:
tcpservice.cpp.
Constructor & Destructor Documentation¶
ost::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.
ost::SocketPort::SocketPort ( SocketService *svc, TCPV6Socket &tcp) [protected]¶
ost::SocketPort::SocketPort ( SocketService *svc, const IPV4Address &ia, tpport_tport) [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.
ost::SocketPort::SocketPort ( SocketService *svc, const IPV6Address &ia, tpport_tport) [protected]¶
ost::SocketPort::SocketPort ( SocketService *svc, const IPV4Host &ih, tpport_tport) [protected]¶
A non-blocking constructor for outbound tcp connections. To detect when the connection is established, overload SocketPort::output(). SocketPort::output() get's called by the SocketService when the connection is ready, SocketPort::disconnect() when the connect failed. at the moment you should set the socket state to 'CONNECTED' when SocketPort::output() get's called for the first time. Parameters:svc pool thread object.
ih addess to connect to.
port number to connect to.
ost::SocketPort::SocketPort ( SocketService *svc, const IPV6Host &ih, tpport_tport) [protected]¶
virtual ost::SocketPort::~SocketPort () [protected], [virtual]¶
Disconnect the socket from the service thread pool and the remote connection.Member Function Documentation¶
void ost::SocketPort::attach ( SocketService *svc) [protected]¶
Attach yourself to the service pool thread object. The later version. Parameters:svc pool thread object
Error ost::SocketPort::connect (const IPV4Address &ia, tpport_tport) [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).
Error ost::SocketPort::connect (const IPV6Address &ia, tpport_tport) [protected]¶
virtual void ost::SocketPort::disconnect (void) [protected], [virtual]¶
Called by the service thread pool when a disconnect has occured.virtual void ost::SocketPort::expired (void) [protected], [virtual]¶
Called by the service thread pool when the objects timer has expired. Used for timed events.bool ost::SocketPort::getDetectOutput (void) const [inline], [protected]¶
Get the current state of the DetectOutput flag.bool ost::SocketPort::getDetectPending (void) const [inline], [protected]¶
Get the current state of the DetectPending flag.void ost::SocketPort::incTimer ( timeout_ttimeout)¶
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.
virtual void ost::SocketPort::output (void) [protected], [virtual]¶
Called by the service thread pool when output data is pending for this socket.ssize_t ost::SocketPort::peek (void *buf, size_tlen) [inline], [protected]¶
Examine the content of the next packet. This can be used to build 'smart' line buffering for derived TCP classes. Parameters:buf pointer to packet buffer to examine.
len of packet buffer to examine.
Returns:
number of bytes actually available.
References _IOLEN64.
virtual void ost::SocketPort::pending (void) [protected], [virtual]¶
Called by the service thread pool when input data is pending for this socket.ssize_t ost::SocketPort::receive (void *buf, size_tlen) [inline], [protected]¶
Receive a message from any host. This is used in derived classes to build protocols. Parameters:buf pointer to packet buffer to receive.
len of packet buffer to receive.
Returns:
number of bytes received.
References _IOLEN64.
ssize_t ost::SocketPort::send (const void *buf, size_tlen) [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:
buf address of buffer to send.
len of bytes to send.
References _IOLEN64.
void ost::SocketPort::setDetectOutput (bool) [protected]¶
Used to indicate if output ready monitoring should be performed by the service thread.void ost::SocketPort::setDetectPending (bool) [protected]¶
Used to indicate if the service thread should monitor pending data for us.void ost::SocketPort::setTimer ( timeout_ttimeout = 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.
Friends And Related Function Documentation¶
friend class SocketService [friend]¶
Author¶
Generated automatically by Doxygen for GNU CommonC++ from the source code.Sun Dec 29 2013 | GNU CommonC++ |