Poco::Net

class TCPServerParams

Library: Net
Package: TCPServer
Header: Poco/Net/TCPServerParams.h

Description

This class is used to specify parameters to both the TCPServer, as well as to TCPServerDispatcher objects.

Subclasses may add new parameters to the class.

Inheritance

Direct Base Classes: Poco::RefCountedObject

All Base Classes: Poco::RefCountedObject

Known Derived Classes: HTTPServerParams

Member Summary

Member Functions: getAcceptorNum, getMaxPendingRequestSize, getMaxQueued, getMaxThreads, getReactorMode, getSendTimeout, getThreadIdleTime, getThreadPriority, getUseSelfReactor, setAcceptorNum, setMaxPendingRequestSize, setMaxQueued, setMaxThreads, setReactorMode, setSendTimeout, setThreadIdleTime, setThreadPriority, setUseSelfReactor

Inherited Functions: duplicate, referenceCount, release

Types Aliases

Ptr

using Ptr = Poco::AutoPtr < TCPServerParams >;

Constructors

TCPServerParams

TCPServerParams();

Creates the TCPServerParams.

Sets the following default values:

  • threadIdleTime: 10 seconds
  • maxThreads: 0
  • maxQueued: 64

Destructor

~TCPServerParams protected virtual

virtual ~TCPServerParams();

Destroys the TCPServerParams.

Member Functions

getAcceptorNum

int getAcceptorNum() const;

Returns the number of acceptors.

getMaxPendingRequestSize inline

std::size_t getMaxPendingRequestSize() const;

Returns the maximum size of a not yet completely received request, in bytes.

getMaxQueued inline

int getMaxQueued() const;

Returns the maximum number of queued connections.

getMaxThreads inline

int getMaxThreads() const;

Returns the maximum number of simultaneous threads available for this TCPServerDispatcher.

getReactorMode

bool getReactorMode() const;

Returns the reactor mode.

If true, use reactor mode, else use thread pool mode.

getSendTimeout inline

const Poco::Timespan & getSendTimeout() const;

Returns the send timeout applied to accepted connections in reactor mode. Zero (the default) means no timeout.

getThreadIdleTime inline

const Poco::Timespan & getThreadIdleTime() const;

Returns the maximum thread idle time.

getThreadPriority inline

Poco::Thread::Priority getThreadPriority() const;

Returns the priority of TCP server threads created by TCPServer.

getUseSelfReactor

bool getUseSelfReactor() const;

Returns true if acceptor's self reactor is used.

setAcceptorNum

void setAcceptorNum(
    int acceptorNum
);

Sets the number of acceptors.

The number of acceptors must be greater than 0. The default is 1.

setMaxPendingRequestSize inline

void setMaxPendingRequestSize(
    std::size_t size
);

Sets the maximum number of bytes buffered per connection while a request is still incomplete; a connection exceeding it is closed. Default 10 MB, 0 disables the limit. Reactor mode only.

The same buffer holds the request body, so the limit must cover the largest body the server is expected to accept.

setMaxQueued

void setMaxQueued(
    int count
);

Sets the maximum number of queued connections. Must be greater than 0.

If there are already the maximum number of connections in the queue, new connections will be silently discarded.

The default number is 64.

setMaxThreads

void setMaxThreads(
    int count
);

Sets the maximum number of simultaneous threads available for this TCPServerDispatcher.

Must be greater than or equal to 0. If 0 is specified, the TCPServerDispatcher will set this parameter to the number of available threads in its thread pool.

The thread pool used by the TCPServerDispatcher must at least have the capacity for the given number of threads.

setReactorMode

void setReactorMode(
    bool reactorMode
);

Sets the reactor mode.

If true, use reactor mode, else use thread pool mode.

setSendTimeout inline

void setSendTimeout(
    const Poco::Timespan & timeout
);

Sets a send timeout on accepted connections (reactor mode only).

In reactor mode HTTP handlers write the response on the reactor thread over a blocking socket. Without a send timeout a client that stops reading (suspended laptop, zero TCP window) blocks that thread forever, permanently wedging the worker reactor and every connection multiplexed onto it. A non-zero send timeout turns that into a TimeoutException that closes the stuck connection instead.

Zero (the default) preserves the historical no-timeout behavior.

setThreadIdleTime

void setThreadIdleTime(
    const Poco::Timespan & idleTime
);

Sets the maximum idle time for a thread before it is terminated.

The default idle time is 10 seconds;

setThreadPriority

void setThreadPriority(
    Poco::Thread::Priority prio
);

Sets the priority of TCP server threads created by TCPServer.

setUseSelfReactor

void setUseSelfReactor(
    bool useSelfReactor
);

Sets the acceptor's self reactor.

If true, use acceptor's self reactor, else create {_maxThreads} threads to use