Man Linux: Main Page and Category List

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)
           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

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_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.

   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.

       Parameters:
           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.

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

       Examples:
           tcpservice.cpp.

   Error ost::SocketPort::connect (const IPV6Address & ia, tpport_t port)
       [protected]
   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.

       Returns:
           0 if successful.

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

   virtual void ost::SocketPort::disconnect (void) [protected, virtual]
       Called by the service thread pool when a disconnect has occured.

       Examples:
           tcpservice.cpp.

   virtual void ost::SocketPort::expired (void) [protected, virtual]
       Called by the service thread pool when the objects timer has expired.
       Used for timed events.

       Examples:
           tcpservice.cpp.

   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_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 ost::TimerPort.

   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_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:
           buf pointer to packet buffer to examine.
           len of packet buffer to examine.

       Returns:
           number of bytes actually available.

   virtual void ost::SocketPort::pending (void) [protected, virtual]
       Called by the service thread pool when input data is pending for this
       socket.

       Examples:
           tcpservice.cpp.

   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.

       Parameters:
           buf pointer to packet buffer to receive.
           len of packet buffer to receive.

       Returns:
           number of bytes received.

       Examples:
           tcpservice.cpp.

   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.

       Returns:
           number of bytes sent.

       Parameters:
           buf address of buffer to send.
           len of bytes to send.

       Examples:
           tcpservice.cpp.

   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_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 ost::TimerPort.

       Examples:
           tcpservice.cpp.

Friends And Related Function Documentation

   friend class SocketService [friend]

Author

       Generated automatically by Doxygen for GNU CommonC++ from the source
       code.