Wizard
Software Engineering Project - Wizard
Loading...
Searching...
No Matches
sockpp::acceptor Class Reference

#include <acceptor.h>

Inheritance diagram for sockpp::acceptor:
sockpp::socket sockpp::acceptor_tmpl< STREAM_SOCK, ADDR > sockpp::unix_acceptor

Public Member Functions

 acceptor ()
 
 acceptor (socket_t handle)
 
 acceptor (const sock_address &addr, int queSize=DFLT_QUE_SIZE)
 
 acceptor (acceptor &&acc)
 
acceptoroperator= (acceptor &&rhs)
 
bool listen (int queSize=DFLT_QUE_SIZE)
 
bool open (const sock_address &addr, int queSize=DFLT_QUE_SIZE, bool reuseSock=true)
 
stream_socket accept (sock_address *clientAddr=nullptr)
 
- Public Member Functions inherited from sockpp::socket
 socket ()
 
 socket (socket_t h)
 
 socket (socket &&sock) noexcept
 
virtual ~socket ()
 
bool is_open () const
 
bool operator! () const
 
 operator bool () const
 
socket_t handle () const
 
virtual sa_family_t family () const
 
socket clone () const
 
void clear (int val=0)
 
socket_t release ()
 
void reset (socket_t h=INVALID_SOCKET)
 
socketoperator= (socket &&sock) noexcept
 
bool bind (const sock_address &addr)
 
sock_address_any address () const
 
sock_address_any peer_address () const
 
bool get_option (int level, int optname, void *optval, socklen_t *optlen) const
 
template<typename T >
bool get_option (int level, int optname, T *val) const
 
bool set_option (int level, int optname, const void *optval, socklen_t optlen)
 
template<typename T >
bool set_option (int level, int optname, const T &val)
 
bool set_non_blocking (bool on=true)
 
int last_error () const
 
std::string last_error_str () const
 
bool shutdown (int how=SHUT_RDWR)
 
bool close ()
 

Static Public Member Functions

static acceptor create (int domain)
 
- Static Public Member Functions inherited from sockpp::socket
static void initialize ()
 
static void destroy ()
 
static socket create (int domain, int type, int protocol=0)
 
static std::tuple< socket, socketpair (int domain, int type, int protocol=0)
 
static std::string error_str (int errNum)
 

Static Protected Member Functions

static socket_t create_handle (int domain)
 
- Static Protected Member Functions inherited from sockpp::socket
static int get_last_error ()
 

Static Protected Attributes

static const int DFLT_QUE_SIZE = 4
 

Additional Inherited Members

- Protected Member Functions inherited from sockpp::socket
bool close_on_err ()
 
void set_last_error ()
 
template<typename T >
check_ret (T ret) const
 
template<typename T >
bool check_ret_bool (T ret) const
 
socket_t check_socket (socket_t ret) const
 
bool check_socket_bool (socket_t ret) const
 

Detailed Description

Class for creating a streaming server. Objects of this class bind and read_message on streaming ports for incoming connections. Normally, a server thread creates one of these and blocks on the call to accept incoming connections. The call to accept creates and returns a stream_socket which can then be used for the actual communications.

Constructor & Destructor Documentation

◆ acceptor() [1/4]

sockpp::acceptor::acceptor ( )
inline

Creates an unconnected acceptor.

◆ acceptor() [2/4]

sockpp::acceptor::acceptor ( socket_t handle)
inlineexplicit

Creates an acceptor from an existing OS socket handle and claims ownership of the handle.

Parameters
handleA socket handle from the operating system.

◆ acceptor() [3/4]

sockpp::acceptor::acceptor ( const sock_address & addr,
int queSize = DFLT_QUE_SIZE )
inline

Creates an acceptor socket and starts it listening to the specified address.

Parameters
addrThe address to which this server should be bound.
queSizeThe listener queue size.

◆ acceptor() [4/4]

sockpp::acceptor::acceptor ( acceptor && acc)
inline

Move constructor. Creates an acceptor by moving the other acceptor to this one.

Parameters
accAnother acceptor

Member Function Documentation

◆ accept()

stream_socket sockpp::acceptor::accept ( sock_address * clientAddr = nullptr)

Accepts an incoming TCP connection and gets the address of the client.

Parameters
clientAddrPointer to the variable that will get the address of a client when it connects.
Returns
A socket to the remote client.

◆ create()

acceptor sockpp::acceptor::create ( int domain)
static

Creates an unbound acceptor socket with an open OS socket handle. An application would need to manually bind and read_message to this acceptor to get incoming connections.

Parameters
domainThe communications domain (address family).
Returns
An open, but unbound acceptor socket.

◆ create_handle()

static socket_t sockpp::acceptor::create_handle ( int domain)
inlinestaticprotected

Creates an underlying acceptor socket. The acceptor uses a stream socket type, but for our purposes is not classified (derived from) a streaming socket, since it doesn't support read and write to the socket.

Parameters
domainThe communications domain (address family).
Returns
An OS handle to a stream socket.

◆ listen()

bool sockpp::acceptor::listen ( int queSize = DFLT_QUE_SIZE)
inline

Sets the socket listening on the address to which it is bound.

Parameters
queSizeThe listener queue size.
Returns
true on _success, false on error

◆ open()

bool sockpp::acceptor::open ( const sock_address & addr,
int queSize = DFLT_QUE_SIZE,
bool reuseSock = true )

Opens the acceptor socket, binds it to the specified address, and starts listening.

Parameters
addrThe address to which this server should be bound.
queSizeThe listener queue size.
reuseSockWhether the SO_REUSEPORT (or SO_REUSEADDR on Win32) socket option should be used before binding and listening.
Returns
true on _success, false on error

◆ operator=()

acceptor & sockpp::acceptor::operator= ( acceptor && rhs)
inline

Move assignment.

Parameters
rhsThe other socket to move into this one.
Returns
A reference to this object.

Member Data Documentation

◆ DFLT_QUE_SIZE

const int sockpp::acceptor::DFLT_QUE_SIZE = 4
staticprotected

The default listener queue size.


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