E-MailRelay
|
A server that listens on more than one address using a facade pattern to multiple GNet::Server instances. More...
#include <gmultiserver.h>
Classes | |
struct | ServerInfo |
A structure used in GNet::MultiServer::newPeer(). More... | |
Public Types | |
using | AddressList = std::vector< Address > |
Public Member Functions | |
MultiServer (EventState es_listener, const G::StringArray &listen_list, unsigned int port, const std::string &server_type, ServerPeer::Config server_peer_config, Server::Config server_config) | |
Constructor. More... | |
~MultiServer () override | |
Destructor. More... | |
bool | hasPeers () const |
Returns true if peers() is not empty. More... | |
std::vector< std::weak_ptr< ServerPeer > > | peers () |
Returns the list of ServerPeer-derived objects. More... | |
std::unique_ptr< ServerPeer > | doNewPeer (EventStateUnbound, ServerPeerInfo &&, const ServerInfo &) |
Pseudo-private method used by the pimple class. More... | |
MultiServer (const MultiServer &)=delete | |
MultiServer (MultiServer &&)=delete | |
MultiServer & | operator= (const MultiServer &)=delete |
MultiServer & | operator= (MultiServer &&)=delete |
Protected Member Functions | |
virtual std::unique_ptr< ServerPeer > | newPeer (EventStateUnbound, ServerPeerInfo &&, ServerInfo)=0 |
A factory method which creates a ServerPeer-derived object. More... | |
void | serverCleanup () |
Should be called from all derived classes' destructors so that peer objects can use their Server objects safely during their own destruction. More... | |
void | serverReport (const std::string &group={}) const |
Writes to the system log a summary of the underlying server objects and their addresses. More... | |
A server that listens on more than one address using a facade pattern to multiple GNet::Server instances.
Supports dynamic server instantiation based on available network interface addresses (see GNet::InterfacesHandler).
Definition at line 47 of file gmultiserver.h.
using GNet::MultiServer::AddressList = std::vector<Address> |
Definition at line 52 of file gmultiserver.h.
GNet::MultiServer::MultiServer | ( | EventState | es_listener, |
const G::StringArray & | listen_list, | ||
unsigned int | port, | ||
const std::string & | server_type, | ||
ServerPeer::Config | server_peer_config, | ||
Server::Config | server_config | ||
) |
Constructor.
The server listens on inherited file descriptors formatted like "fd#3", specific local addresses (eg. "127.0.0.1") and addresses from named interfaces ("eth0").
Listens on "0.0.0.0" and "::" if the listen list is empty.
Throws if there are no addresses in the list and the GNet::Interfaces implementation is not active().
Definition at line 32 of file gmultiserver.cpp.
|
override |
Destructor.
Definition at line 83 of file gmultiserver.cpp.
std::unique_ptr< GNet::ServerPeer > GNet::MultiServer::doNewPeer | ( | EventStateUnbound | esu, |
ServerPeerInfo && | pi, | ||
const ServerInfo & | si | ||
) |
Pseudo-private method used by the pimple class.
Definition at line 202 of file gmultiserver.cpp.
bool GNet::MultiServer::hasPeers | ( | ) | const |
Returns true if peers() is not empty.
Definition at line 208 of file gmultiserver.cpp.
|
protectedpure virtual |
A factory method which creates a ServerPeer-derived object.
See GNet::Server for the details.
std::vector< std::weak_ptr< GNet::ServerPeer > > GNet::MultiServer::peers | ( | ) |
Returns the list of ServerPeer-derived objects.
The returned ServerPeer objects must not outlive this MultiServer.
Definition at line 220 of file gmultiserver.cpp.
|
protected |
Should be called from all derived classes' destructors so that peer objects can use their Server objects safely during their own destruction.
Definition at line 117 of file gmultiserver.cpp.
|
protected |
Writes to the system log a summary of the underlying server objects and their addresses.
Definition at line 191 of file gmultiserver.cpp.