Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

TCPSession Class Reference

The TCP session is used to primarily to represent a client connection that can be managed on a seperate thread. Threaded streamable socket with non-blocking constructor. More...

#include <socket.h>

Inheritance diagram for TCPSession:

TCPStream Thread Socket List of all members.

Public Member Functions

 TCPSession (const IPV4Host &host, tpport_t port, int size=512, int pri=0, int 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 (TCPSocket &server, int size=512, int pri=0, int 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.

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 final (void)
 TCPSession derived objects can be freely created with "new" and safely terminate their "run" method on their own by self-deleting when the thread terminates.

Detailed Description

The TCP session is used to primarily to represent a client connection that can be managed on a seperate thread. Threaded streamable socket with non-blocking constructor.

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@ostel.com>
Examples:

tcpthread.cpp.


Constructor & Destructor Documentation

TCPSession::TCPSession const IPV4Host host,
tpport_t  port,
int  size = 512,
int  pri = 0,
int  stack = 0
 

Create a TCP socket that will be connected to a remote TCP server and that will execute under it's own thread.

Parameters:
host internet address of remote TCP server.
port number of remote server.
size of streaming buffer.
pri execution priority relative to parent.
stack allocation needed on some platforms.

TCPSession::TCPSession TCPSocket server,
int  size = 512,
int  pri = 0,
int  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.

Parameters:
server tcp socket to accept a connection from.
size of streaming buffer.
pri execution priority relative to parent.
stack allocation needed on some platforms.


Member Function Documentation

void TCPSession::final void   )  [inline, protected, virtual]
 

TCPSession derived objects can be freely created with "new" and safely terminate their "run" method on their own by self-deleting when the thread terminates.

Note:
Since a thread cannot delete its own context or join itself, to make a TCPSession that is a self running object that self-deletes, one has to detach the associated thread by using detach() instead of start().

Reimplemented from Thread.

Examples:
tcpthread.cpp.

void TCPSession::initial void   )  [protected, virtual]
 

The initial method is used to esablish a connection when delayed completion is used.

This assures the constructor terminates without having to wait for a connection request to complete.

Reimplemented from Thread.

int TCPSession::waitConnection timeout_t  timeout = TIMEOUT_INF  )  [protected]
 

Normally called during the thread Initial() method by default, this will wait for the socket connection to complete when connecting to a remote socket.

One might wish to use setCompletion() to change the socket back to blocking I/O calls after the connection completes. To implement the session one must create a derived class which implements run().

Returns:
0 if successful, -1 if timed out.
Parameters:
timeout to wait for completion in milliseconds.


The documentation for this class was generated from the following file:
Generated on Tue Jan 18 14:32:38 2005 for GNU CommonC++ by  doxygen 1.3.9.1