#include <socketport.h>

Public Member Functions | |
| void | setTimer (timeout_t timeout=0) |
| Derived setTimer to notify the service thread pool of change in expected timeout. | |
| void | incTimer (timeout_t timeout) |
| Derived incTimer to notify the service thread pool of a change in expected timeout. | |
Protected Member Functions | |
| SocketPort (SocketService *svc, TCPSocket &tcp) | |
| Construct an accepted TCP socket connection from a specific bound TCP server. | |
| SocketPort (SocketService *svc, TCPV6Socket &tcp) | |
| SocketPort (SocketService *svc, const IPV4Address &ia, tpport_t port) | |
| Construct a bound UDP socket for use in deriving realtime UDP streaming protocols handled by thread pool objects. | |
| SocketPort (SocketService *svc, const IPV6Address &ia, tpport_t port) | |
| SocketPort (SocketService *svc, const IPV4Host &ih, tpport_t port) | |
| A non-blocking constructor for outbound tcp connections. | |
| SocketPort (SocketService *svc, const IPV6Host &ih, tpport_t port) | |
| void | attach (SocketService *svc) |
| Attach yourself to the service pool thread object. | |
| virtual | ~SocketPort () |
| Disconnect the socket from the service thread pool and the remote connection. | |
| void | setDetectPending (bool) |
| Used to indicate if the service thread should monitor pending data for us. | |
| bool | getDetectPending (void) const |
| Get the current state of the DetectPending flag. | |
| void | setDetectOutput (bool) |
| Used to indicate if output ready monitoring should be performed by the service thread. | |
| bool | getDetectOutput (void) const |
| Get the current state of the DetectOutput flag. | |
| virtual void | expired (void) |
| Called by the service thread pool when the objects timer has expired. | |
| virtual void | pending (void) |
| Called by the service thread pool when input data is pending for this socket. | |
| virtual void | output (void) |
| Called by the service thread pool when output data is pending for this socket. | |
| virtual void | disconnect (void) |
| Called by the service thread pool when a disconnect has occured. | |
| Error | connect (const IPV4Address &ia, tpport_t port) |
| Connect a Socket Port to a known peer host. | |
| Error | connect (const IPV6Address &ia, tpport_t port) |
| ssize_t | send (const void *buf, size_t len) |
| Transmit "send" data to a connected peer host. | |
| ssize_t | receive (void *buf, size_t len) |
| Receive a message from any host. | |
| ssize_t | peek (void *buf, size_t len) |
| Examine the content of the next packet. | |
Friends | |
| class | SocketService |
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.
| 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.
| 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_t | port | |||
| ) | [protected] |
Construct a bound UDP socket for use in deriving realtime UDP streaming protocols handled by thread pool objects.
| svc | pool thread object. | |
| ia | address of interface to bind. | |
| port | number to bind to. |
| ost::SocketPort::SocketPort | ( | SocketService * | svc, | |
| const IPV6Address & | ia, | |||
| tpport_t | port | |||
| ) | [protected] |
| ost::SocketPort::SocketPort | ( | SocketService * | svc, | |
| const IPV4Host & | ih, | |||
| tpport_t | port | |||
| ) | [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.
| svc | pool thread object. | |
| ih | addess to connect to. | |
| port | number to connect to. |
| ost::SocketPort::SocketPort | ( | SocketService * | svc, | |
| const IPV6Host & | ih, | |||
| tpport_t | port | |||
| ) | [protected] |
| virtual ost::SocketPort::~SocketPort | ( | ) | [protected, virtual] |
Disconnect the socket from the service thread pool and the remote connection.
| void ost::SocketPort::attach | ( | SocketService * | svc | ) | [protected] |
Attach yourself to the service pool thread object.
The later version.
| svc | pool thread object |
| void ost::SocketPort::setDetectPending | ( | bool | ) | [protected] |
Used to indicate if the service thread should monitor pending data for us.
| bool ost::SocketPort::getDetectPending | ( | void | ) | const [inline, protected] |
Get the current state of the DetectPending flag.
| void ost::SocketPort::setDetectOutput | ( | bool | ) | [protected] |
Used to indicate if output ready monitoring should be performed by the service thread.
| bool ost::SocketPort::getDetectOutput | ( | void | ) | const [inline, protected] |
Get the current state of the DetectOutput flag.
| virtual void ost::SocketPort::expired | ( | void | ) | [protected, virtual] |
Called by the service thread pool when the objects timer has expired.
Used for timed events.
| virtual void ost::SocketPort::pending | ( | void | ) | [protected, virtual] |
Called by the service thread pool when input data is pending for this socket.
| virtual void ost::SocketPort::output | ( | void | ) | [protected, virtual] |
Called by the service thread pool when output data is pending for this socket.
| virtual void ost::SocketPort::disconnect | ( | void | ) | [protected, virtual] |
| Error ost::SocketPort::connect | ( | const IPV4Address & | 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.
| ia | address of remote host or subnet. | |
| port | number of remote peer(s). |
| Error ost::SocketPort::connect | ( | const IPV6Address & | ia, | |
| tpport_t | port | |||
| ) | [protected] |
| ssize_t ost::SocketPort::send | ( | const void * | buf, | |
| size_t | 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.
| buf | address of buffer to send. | |
| len | of bytes to send. |
| ssize_t ost::SocketPort::receive | ( | void * | buf, | |
| size_t | len | |||
| ) | [inline, protected] |
Receive a message from any host.
This is used in derived classes to build protocols.
| buf | pointer to packet buffer to receive. | |
| len | of packet buffer to receive. |
| ssize_t ost::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.
| buf | pointer to packet buffer to examine. | |
| len | of packet buffer to examine. |
| void ost::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.
| timeout | in milliseconds. |
Reimplemented from ost::TimerPort.
| void ost::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.
| timeout | in milliseconds. |
Reimplemented from ost::TimerPort.
friend class SocketService [friend] |
1.5.4