PionNetworkLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
pion::tcp::server Class Reference

#include <server.hpp>

Inheritance diagram for pion::tcp::server:
Collaboration diagram for pion::tcp::server:

Public Member Functions

virtual ~server ()
 default destructor More...
 
void start (void)
 starts listening for new connections More...
 
void stop (bool wait_until_finished=false)
 
void join (void)
 the calling thread will sleep until the server has stopped listening for connections More...
 
void set_ssl_key_file (const std::string &pem_key_file)
 
std::size_t get_connections (void) const
 returns the number of active tcp connections More...
 
unsigned int get_port (void) const
 returns tcp port number that the server listens for connections on More...
 
void set_port (unsigned int p)
 sets tcp port number that the server listens for connections on More...
 
boost::asio::ip::address get_address (void) const
 returns IP address that the server listens for connections on More...
 
void set_address (const boost::asio::ip::address &addr)
 sets IP address that the server listens for connections on More...
 
const
boost::asio::ip::tcp::endpoint & 
get_endpoint (void) const
 returns tcp endpoint that the server listens for connections on More...
 
void set_endpoint (const boost::asio::ip::tcp::endpoint &ep)
 sets tcp endpoint that the server listens for connections on More...
 
bool get_ssl_flag (void) const
 returns true if the server uses SSL to encrypt connections More...
 
void set_ssl_flag (bool b=true)
 sets value of SSL flag (true if the server uses SSL to encrypt connections) More...
 
connection::ssl_context_typeget_ssl_context_type (void)
 returns the SSL context for configuration More...
 
bool is_listening (void) const
 returns true if the server is listening for connections More...
 
void set_logger (logger log_ptr)
 sets the logger to be used More...
 
logger get_logger (void)
 returns the logger currently in use More...
 
boost::asio::ip::tcp::acceptor & get_acceptor (void)
 returns mutable reference to the TCP connection acceptor More...
 
const
boost::asio::ip::tcp::acceptor & 
get_acceptor (void) const
 returns const reference to the TCP connection acceptor More...
 

Protected Member Functions

 server (const unsigned int tcp_port)
 
 server (const boost::asio::ip::tcp::endpoint &endpoint)
 
 server (scheduler &sched, const unsigned int tcp_port=0)
 
 server (scheduler &sched, const boost::asio::ip::tcp::endpoint &endpoint)
 
virtual void handle_connection (const tcp::connection_ptr &tcp_conn)
 
virtual void before_starting (void)
 called before the TCP server starts listening for new connections More...
 
virtual void after_stopping (void)
 called after the TCP server has stopped listing for new connections More...
 
boost::asio::io_service & get_io_service (void)
 returns an async I/O service used to schedule work More...
 

Protected Attributes

logger m_logger
 primary logging interface used by this class More...
 

Detailed Description

tcp::server: a multi-threaded, asynchronous TCP server

Constructor & Destructor Documentation

virtual pion::tcp::server::~server ( )
inlinevirtual

default destructor

Reimplemented in pion::http::server.

pion::tcp::server::server ( const unsigned int  tcp_port)
explicitprotected

protected constructor so that only derived objects may be created

Parameters
tcp_portport number used to listen for new connections (IPv4)
pion::tcp::server::server ( const boost::asio::ip::tcp::endpoint &  endpoint)
explicitprotected

protected constructor so that only derived objects may be created

Parameters
endpointTCP endpoint used to listen for new connections (see ASIO docs)
pion::tcp::server::server ( scheduler sched,
const unsigned int  tcp_port = 0 
)
explicitprotected

protected constructor so that only derived objects may be created

Parameters
schedthe scheduler that will be used to manage worker threads
tcp_portport number used to listen for new connections (IPv4)
pion::tcp::server::server ( scheduler sched,
const boost::asio::ip::tcp::endpoint &  endpoint 
)
protected

protected constructor so that only derived objects may be created

Parameters
schedthe scheduler that will be used to manage worker threads
endpointTCP endpoint used to listen for new connections (see ASIO docs)

Member Function Documentation

virtual void pion::tcp::server::after_stopping ( void  )
inlineprotectedvirtual

called after the TCP server has stopped listing for new connections

Reimplemented in pion::http::plugin_server.

Referenced by stop().

virtual void pion::tcp::server::before_starting ( void  )
inlineprotectedvirtual

called before the TCP server starts listening for new connections

Reimplemented in pion::http::plugin_server.

Referenced by start().

boost::asio::ip::tcp::acceptor& pion::tcp::server::get_acceptor ( void  )
inline

returns mutable reference to the TCP connection acceptor

const boost::asio::ip::tcp::acceptor& pion::tcp::server::get_acceptor ( void  ) const
inline

returns const reference to the TCP connection acceptor

boost::asio::ip::address pion::tcp::server::get_address ( void  ) const
inline

returns IP address that the server listens for connections on

std::size_t pion::tcp::server::get_connections ( void  ) const

returns the number of active tcp connections

const boost::asio::ip::tcp::endpoint& pion::tcp::server::get_endpoint ( void  ) const
inline

returns tcp endpoint that the server listens for connections on

boost::asio::io_service& pion::tcp::server::get_io_service ( void  )
inlineprotected

returns an async I/O service used to schedule work

logger pion::tcp::server::get_logger ( void  )
inline

returns the logger currently in use

unsigned int pion::tcp::server::get_port ( void  ) const
inline

returns tcp port number that the server listens for connections on

Referenced by pion::http::server::handle_request(), start(), and stop().

connection::ssl_context_type& pion::tcp::server::get_ssl_context_type ( void  )
inline

returns the SSL context for configuration

bool pion::tcp::server::get_ssl_flag ( void  ) const
inline

returns true if the server uses SSL to encrypt connections

virtual void pion::tcp::server::handle_connection ( const tcp::connection_ptr tcp_conn)
inlineprotectedvirtual

handles a new TCP connection; derived classes SHOULD override this since the default behavior does nothing

Parameters
tcp_connthe new TCP connection to handle

Reimplemented in pion::http::server.

References pion::tcp::connection::LIFECYCLE_CLOSE.

bool pion::tcp::server::is_listening ( void  ) const
inline

returns true if the server is listening for connections

void pion::tcp::server::join ( void  )

the calling thread will sleep until the server has stopped listening for connections

void pion::tcp::server::set_address ( const boost::asio::ip::address &  addr)
inline

sets IP address that the server listens for connections on

void pion::tcp::server::set_endpoint ( const boost::asio::ip::tcp::endpoint &  ep)
inline

sets tcp endpoint that the server listens for connections on

void pion::tcp::server::set_logger ( logger  log_ptr)
inline

sets the logger to be used

void pion::tcp::server::set_port ( unsigned int  p)
inline

sets tcp port number that the server listens for connections on

void pion::tcp::server::set_ssl_flag ( bool  b = true)
inline

sets value of SSL flag (true if the server uses SSL to encrypt connections)

Referenced by set_ssl_key_file().

void pion::tcp::server::set_ssl_key_file ( const std::string &  pem_key_file)

configures server for SSL using a PEM-encoded RSA private key file

Parameters
pem_key_filename of the file containing a PEM-encoded private key

References set_ssl_flag().

void pion::tcp::server::start ( void  )

starts listening for new connections

References pion::scheduler::add_active_user(), before_starting(), get_port(), m_logger, PION_LOG_ERROR, and PION_LOG_INFO.

void pion::tcp::server::stop ( bool  wait_until_finished = false)

stops listening for new connections

Parameters
wait_until_finishedif true, blocks until all pending connections have closed

References after_stopping(), pion::tcp::connection::close(), get_port(), m_logger, PION_LOG_INFO, pion::scheduler::remove_active_user(), and pion::scheduler::sleep().

Member Data Documentation


The documentation for this class was generated from the following files: