This class implements a multithreaded TCP server.
The server uses a ServerSocket to listen for incoming connections. The ServerSocket must have been bound to an address before it is passed to the TCPServer constructor. Additionally, the ServerSocket must be put into listening state before the TCPServer is started by calling the start() method.
The server uses a thread pool to assign threads to incoming connections. Before incoming connections are assigned to a connection thread, they are put into a queue. Connection threads fetch new connections from the queue as soon as they become free. Thus, a connection thread may serve more than one connection.
As soon as a connection thread fetches the next connection from the queue, it creates a TCPServerConnection object for it (using the TCPServerConnectionFactory passed to the constructor) and calls the TCPServerConnection's start() method. When the start() method returns, the connection object is deleted.
The number of connection threads is adjusted dynamically, depending on the number of connections waiting to be served.
It is possible to specify a maximum number of queued connections. This prevents the connection queue from overflowing in the case of an extreme server load. In such a case, connections that cannot be queued are silently and immediately closed.
To stop the server from accepting new connections, call stop().
After calling stop(), no new connections will be accepted and all queued connections will be discarded. Already served connections, however, will continue being served.
Direct Base Classes: Poco::Runnable
All Base Classes: Poco::Runnable
Known Derived Classes: HTTPServer
Inherited Functions: run
New threads are taken from the default thread pool.
New threads are taken from the given thread pool.
int currentConnections() const;
Returns the number of currently handled connections.
int currentThreads() const;
Returns the number of currently used connection threads.
int maxConcurrentConnections() const;
Returns the maximum number of concurrently handled connections.
const TCPServerParams & params() const;
Returns a const reference to the TCPServerParam object used by the server's TCPServerDispatcher.
Poco::UInt16 port() const;
Returns the port the server socket listens on.
int queuedConnections() const;
Returns the number of queued connections.
int refusedConnections() const;
Returns the number of refused connections.
Starts the server. A new thread will be created that waits for and accepts incoming connections.
Stops the server.
No new connections will be accepted. Already handled connections will continue to be served.
Once the server has been stopped, it cannot be restarted.
int totalConnections() const;
Returns the total number of handled connections.
See also: Poco::Runnable::run()
static std::string threadName(
const ServerSocket & socket
Returns a thread name for the server thread.