The TCP session is used to primarily to represent a client connection that can be managed on a separate thread.
More...
Public Member Functions |
| | TCPSession (const IPV4Host &host, tpport_t port, size_t size=536, int pri=0, size_t stack=0) |
| | Create a TCP socket that will be connected to a remote TCP server and that will execute under it's own thread.
|
| | TCPSession (const IPV6Host &host, tpport_t port, size_t size=536, int pri=0, size_t stack=0) |
| | TCPSession (TCPSocket &server, int pri=0, size_t stack=0) |
| | Create a TCP socket from a bound TCP server by accepting a pending connection from that server and execute a thread for the accepted connection.
|
| | TCPSession (TCPV6Socket &server, int pri=0, size_t stack=0) |
| virtual | ~TCPSession () |
| | Make sure destruction happens through a virtual...
|
| | Thread (bool isMain) |
| | This is actually a special constructor that is used to create a thread "object" for the current execution context when that context is not created via an instance of a derived Thread object itself.
|
| | Thread (int pri=0, size_t stack=0) |
| | When a thread object is contructed, a new thread of execution context is created.
|
| | Thread (const Thread &th) |
| | A thread of execution can also be specified by cloning an existing thread.
|
| virtual | ~Thread () |
| | The thread destructor should clear up any resources that have been allocated by the thread.
|
| int | start (Semaphore *start=0) |
| | When a new thread is created, it does not begin immediate execution.
|
| int | detach (Semaphore *start=0) |
| | Start a new thread as "detached".
|
| Thread * | getParent (void) |
| | Gets the pointer to the Thread class which created the current thread object.
|
| void | suspend (void) |
| | Suspends execution of the selected thread.
|
| void | resume (void) |
| | Resumes execution of the selected thread.
|
| Cancel | getCancel (void) |
| | Used to retrieve the cancellation mode in effect for the selected thread.
|
| bool | isRunning (void) const |
| | Verifies if the thread is still running or has already been terminated but not yet deleted.
|
| bool | isDetached (void) const |
| | Check if this thread is detached.
|
| void | join (void) |
| | Blocking call which unlocks when thread terminates.
|
| bool | isThread (void) const |
| | Tests to see if the current execution context is the same as the specified thread object.
|
| cctid_t | getId (void) const |
| | Get system thread numeric identifier.
|
| const char * | getName (void) const |
| | Get the name string for this thread, to use in debug messages.
|
| | TCPStream (Family family=IPV4, bool throwflag=true, timeout_t to=0) |
| | The constructor required for building other classes or to start an unconnected TCPStream for connect.
|
| void | disconnect (void) |
| | Disconnect the current session and prepare for a new one.
|
| int | getSegmentSize (void) |
| | Get protocol segment size.
|
| | TCPStream (TCPSocket &server, bool throwflag=true, timeout_t timeout=0) |
| | Create a TCP stream by accepting a connection from a bound TCP socket acting as a server.
|
| | TCPStream (TCPV6Socket &server, bool throwflag=true, timeout_t timeout=0) |
| void | connect (TCPSocket &server) |
| | Accept a connection from a TCP Server.
|
| void | connect (TCPV6Socket &server) |
| | TCPStream (const IPV4Host &host, tpport_t port, unsigned mss=536, bool throwflag=true, timeout_t timeout=0) |
| | Create a TCP stream by connecting to a TCP socket (on a remote machine).
|
| | TCPStream (const IPV6Host &host, tpport_t port, unsigned mss=536, bool throwflag=true, timeout_t timeout=0) |
| | TCPStream (const char *name, Family family=IPV4, unsigned mss=536, bool throwflag=false, timeout_t timer=0) |
| | Construct a named TCP Socket connected to a remote machine.
|
| void | setTimeout (timeout_t timer) |
| | Set the I/O operation timeout for socket I/O operations.
|
| | TCPStream (const TCPStream &source) |
| | A copy constructor creates a new stream buffer.
|
| virtual | ~TCPStream () |
| | Flush and empty all buffers, and then remove the allocated buffers.
|
| int | sync (void) |
| | Flushes the stream input and output buffers, writes pending output.
|
| size_t | printf (const char *format,...) |
| | Print content into a socket.
|
| bool | isPending (Pending pend, timeout_t timeout=TIMEOUT_INF) |
| | Get the status of pending stream data.
|
| ssize_t | peek (void *buf, size_t len) |
| | Examine contents of next waiting packet.
|
| size_t | getBufferSize (void) const |
| | Return the size of the current stream buffering used.
|
| virtual | ~Socket () |
| | The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object.
|
| Socket & | operator= (const Socket &from) |
| | Sockets may also be duplicated by the assignment operator.
|
| virtual IPV4Host | getIPV4Sender (tpport_t *port=NULL) const |
| | May be used to examine the origin of data waiting in the socket receive queue.
|
| IPV4Host | getSender (tpport_t *port=NULL) const |
| virtual IPV6Host | getIPV6Sender (tpport_t *port=NULL) const |
| IPV4Host | getIPV4Peer (tpport_t *port=NULL) const |
| | Get the host address and port of the socket this socket is connected to.
|
| IPV4Host | getPeer (tpport_t *port=NULL) const |
| IPV6Host | getIPV6Peer (tpport_t *port=NULL) const |
| IPV4Host | getIPV4Local (tpport_t *port=NULL) const |
| | Get the local address and port number this socket is currently bound to.
|
| IPV4Host | getLocal (tpport_t *port=NULL) const |
| IPV6Host | getIPV6Local (tpport_t *port=NULL) const |
| IPV4Host | getIPV4NAT (tpport_t *port=NULL) const |
| | Perform NAT table lookup for this socket.
|
| IPV4Host | getNAT (tpport_t *port) const |
| IPV6Host | getIPV6NAT (tpport_t *port=NULL) const |
| void | setCompletion (bool immediate) |
| | Used to specify blocking mode for the socket.
|
| Error | setLinger (bool linger) |
| | Enable lingering sockets on close.
|
| Error | setKeepAlive (bool enable) |
| | Set the keep-alive status of this socket and if keep-alive messages will be sent.
|
| Error | setTypeOfService (Tos service) |
| | Set packet scheduling on platforms which support ip quality of service conventions.
|
| bool | isConnected (void) const |
| | Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer().
|
| bool | isActive (void) const |
| | Test to see if the socket is at least operating or if it is mearly initialized.
|
| bool | operator! () const |
| | Operator based testing to see if a socket is currently active.
|
| bool | isBroadcast (void) const |
| | Return if broadcast has been enabled for the specified socket.
|
| bool | isRouted (void) const |
| | Return if socket routing is enabled.
|
| Error | getErrorNumber (void) const |
| | Often used by a "catch" to fetch the last error of a thrown socket.
|
| const char * | getErrorString (void) const |
| | Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used.
|
| long | getSystemError (void) const |
| const char * | getSystemErrorString (void) const |
Protected Member Functions |
| int | waitConnection (timeout_t timeout=TIMEOUT_INF) |
| | Normally called during the thread Initial() method by default, this will wait for the socket connection to complete when connecting to a remote socket.
|
| void | initial (void) |
| | The initial method is used to esablish a connection when delayed completion is used.
|
| void | setName (const char *text) |
| | Set the name of the current thread.
|
| virtual void | run (void)=0 |
| | All threads execute by deriving the Run method of Thread.
|
| virtual void | final (void) |
| | A thread that is self terminating, either by invoking exit() or leaving it's run(), will have this method called.
|
| virtual void * | getExtended (void) |
| | Since getParent() and getThread() only refer to an object of the Thread "base" type, this virtual method can be replaced in a derived class with something that returns data specific to the derived class that can still be accessed through the pointer returned by getParent() and getThread().
|
| virtual void | notify (Thread *) |
| | When a thread terminates, it now sends a notification message to the parent thread which created it.
|
| void | exit (void) |
| | Used to properly exit from a Thread derived run() or initial() method.
|
| void | sync (void) |
| | Used to wait for a join or cancel, in place of explicit exit.
|
| bool | testCancel (void) |
| | test a cancellation point for deferred thread cancellation.
|
| void | setCancel (Cancel mode) |
| | Sets thread cancellation mode.
|
| void | setSuspend (Suspend mode) |
| | Sets the thread's ability to be suspended from execution.
|
| void | terminate (void) |
| | Used by another thread to terminate the current thread.
|
| void | clrParent (void) |
| | clear parent thread relationship.
|
| void | allocate (size_t size) |
| | Used to allocate the buffer space needed for iostream operations.
|
| void | endStream (void) |
| | Used to terminate the buffer space and cleanup the socket connection.
|
| int | underflow () |
| | This streambuf method is used to load the input buffer through the established tcp socket connection.
|
| int | uflow () |
| | This streambuf method is used for doing unbuffered reads through the establish tcp socket connection when in interactive mode.
|
| int | overflow (int ch) |
| | This streambuf method is used to write the output buffer through the established tcp connection.
|
| void | connect (const IPV4Host &host, tpport_t port, unsigned mss=536) |
| | Create a TCP stream by connecting to a TCP socket (on a remote machine).
|
| void | connect (const IPV6Host &host, tpport_t port, unsigned mss=536) |
| void | connect (const char *name, unsigned mss=536) |
| | Connect a TCP stream to a named destination host and port number, using getaddrinfo interface if available.
|
| std::iostream * | tcp (void) |
| | Used in derived classes to refer to the current object via it's iostream.
|
| Error | error (Error error, const char *err=NULL, long systemError=0) const |
| | This service is used to throw all socket errors which usually occur during the socket constructor.
|
| void | error (const char *err) const |
| | This service is used to throw application defined socket errors where the application specific error code is a string.
|
| void | setError (bool enable) |
| | This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag.
|
| void | endSocket (void) |
| | Used as the default destructor for ending a socket.
|
| Error | connectError (void) |
| | Used as a common handler for connection failure processing.
|
| Error | sendLimit (int limit=2048) |
| | Set the send limit.
|
| Error | receiveLimit (int limit=1) |
| | Set thr receive limit.
|
| Error | sendTimeout (timeout_t timer) |
| | Set the send timeout for sending raw network data.
|
| Error | receiveTimeout (timeout_t timer) |
| | Receive timeout for receiving raw network data.
|
| Error | sendBuffer (unsigned size) |
| | Set the protocol stack network kernel send buffer size associated with the socket.
|
| Error | receiveBuffer (unsigned size) |
| | Set the protocol stack network kernel receive buffer size associated with the socket.
|
| Error | bufferSize (unsigned size) |
| | Set the total protocol stack network kernel buffer size for both send and receive together.
|
| Error | setBroadcast (bool enable) |
| | Set the subnet broadcast flag for the socket.
|
| Error | setMulticastByFamily (bool enable, Family family=IPV4) |
| | Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to.
|
| Error | setLoopbackByFamily (bool enable, Family family=IPV4) |
| | Set the multicast loopback flag for the socket.
|
| Error | setTimeToLiveByFamily (unsigned char ttl, Family fam=IPV4) |
| | Set the multicast time to live for a multicast socket.
|
| Error | join (const IPV4Multicast &ia) |
| | Join a multicast group.
|
| Error | join (const IPV6Multicast &ia) |
| Error | drop (const IPV4Multicast &ia) |
| | Drop membership from a multicast group.
|
| Error | drop (const IPV6Multicast &ia) |
| Error | setRouting (bool enable) |
| | Set the socket routing to indicate if outgoing messages should bypass normal routing (set false).
|
| Error | setNoDelay (bool enable) |
| | Enable/disable delaying packets (Nagle algorithm)
|
| | Socket (int domain, int type, int protocol=0) |
| | An unconnected socket may be created directly on the local machine.
|
| | Socket (SOCKET fd) |
| | A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call.
|
| | Socket () |
| | Create an inactive socket object for base constructors.
|
| | Socket (const Socket &source) |
| | A socket can also be constructed from an already existing Socket object.
|
| ssize_t | readLine (char *buf, size_t len, timeout_t timeout=0) |
| | Process a logical input line from a socket descriptor directly.
|
| virtual ssize_t | readData (void *buf, size_t len, char separator=0, timeout_t t=0) |
| | Read in a block of len bytes with specific separator.
|
| virtual ssize_t | writeData (const void *buf, size_t len, timeout_t t=0) |
| | Write a block of len bytes to socket.
|
The TCP session is used to primarily to represent a client connection that can be managed on a separate thread.
The TCP session also supports a non-blocking connection scheme which prevents blocking during the constructor and moving the process of completing a connection into the thread that executes for the session.
- Author:
- David Sugar dyfet.nosp@m.@ost.nosp@m.el.co.nosp@m.m Threaded streamable socket with non-blocking constructor.
- Examples:
- tcpthread.cpp.