sockpp
Modern C++ socket library wrapper
Public Types | Public Member Functions | Static Public Member Functions | List of all members
sockpp::acceptor_tmpl< STREAM_SOCK, ADDR > Class Template Reference

Base template class for streaming servers of specific address families. More...

#include <acceptor.h>

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

Public Types

using stream_sock_t = STREAM_SOCK
 The type of streaming socket from the acceptor. More...
 
using addr_t = ADDR
 The type of address for the acceptor and streams. More...
 

Public Member Functions

 acceptor_tmpl ()
 Creates an unconnected acceptor.
 
 acceptor_tmpl (const addr_t &addr, int queSize=DFLT_QUE_SIZE)
 Creates a acceptor and starts it listening on the specified address. More...
 
 acceptor_tmpl (in_port_t port, int queSize=DFLT_QUE_SIZE)
 Creates a acceptor and starts it listening on the specified port. More...
 
 acceptor_tmpl (acceptor_tmpl &&acc)
 Move constructor. More...
 
acceptor_tmploperator= (acceptor_tmpl &&rhs)
 Move assignment. More...
 
addr_t address () const
 Gets the local address to which we are bound. More...
 
bool bind (const addr_t &addr)
 Binds the socket to the specified address. More...
 
bool open (const addr_t &addr, int queSize=DFLT_QUE_SIZE)
 Opens the acceptor socket, binds it to the specified address, and starts listening. More...
 
bool open (in_port_t port, int queSize=DFLT_QUE_SIZE)
 Opens the acceptor socket, binds the socket to all adapters and starts it listening. More...
 
stream_sock_t accept (addr_t *clientAddr=nullptr)
 Accepts an incoming connection and gets the address of the client. More...
 
- Public Member Functions inherited from sockpp::acceptor
 acceptor ()
 Creates an unconnected acceptor.
 
 acceptor (socket_t handle)
 Creates an acceptor from an existing OS socket handle and claims ownership of the handle. More...
 
 acceptor (const sock_address &addr, int queSize=DFLT_QUE_SIZE)
 Creates an acceptor socket and starts it listening to the specified address. More...
 
 acceptor (acceptor &&acc)
 Move constructor. More...
 
acceptoroperator= (acceptor &&rhs)
 Move assignment. More...
 
bool listen (int queSize=DFLT_QUE_SIZE)
 Sets the socket listening on the address to which it is bound. More...
 
bool 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. More...
 
stream_socket accept (sock_address *clientAddr=nullptr)
 Accepts an incoming TCP connection and gets the address of the client. More...
 
- Public Member Functions inherited from sockpp::socket
 socket ()
 Creates an unconnected (invalid) socket.
 
 socket (socket_t h)
 Creates a socket from an existing OS socket handle. More...
 
 socket (socket &&sock) noexcept
 Move constructor. More...
 
virtual ~socket ()
 Destructor closes the socket.
 
bool is_open () const
 Determines if the socket is open (valid). More...
 
bool operator! () const
 Determines if the socket is closed or in an error state. More...
 
 operator bool () const
 Determines if the socket is open and in an error-free state. More...
 
socket_t handle () const
 Get the underlying OS socket handle. More...
 
virtual sa_family_t family () const
 Gets the network family of the address to which the socket is bound. More...
 
socket clone () const
 Creates a new socket that refers to this one. More...
 
void clear (int val=0)
 Clears the error flag for the object. More...
 
socket_t release ()
 Releases ownership of the underlying socket object. More...
 
void reset (socket_t h=INVALID_SOCKET)
 Replaces the underlying managed socket object. More...
 
socketoperator= (socket &&sock) noexcept
 Move assignment. More...
 
bool bind (const sock_address &addr)
 Binds the socket to the specified address. More...
 
sock_address_any address () const
 Gets the local address to which the socket is bound. More...
 
sock_address_any peer_address () const
 Gets the address of the remote peer, if this socket is connected. More...
 
bool get_option (int level, int optname, void *optval, socklen_t *optlen) const
 Gets the value of a socket option. More...
 
template<typename T >
bool get_option (int level, int optname, T *val) const
 Gets the value of a socket option. More...
 
bool set_option (int level, int optname, const void *optval, socklen_t optlen)
 Sets the value of a socket option. More...
 
template<typename T >
bool set_option (int level, int optname, const T &val)
 Sets the value of a socket option. More...
 
bool set_non_blocking (bool on=true)
 Places the socket into or out of non-blocking mode. More...
 
int last_error () const
 Gets the code for the last errror. More...
 
std::string last_error_str () const
 Gets a string describing the last errror. More...
 
bool shutdown (int how=SHUT_RDWR)
 Shuts down all or part of the full-duplex connection. More...
 
bool close ()
 Closes the socket. More...
 

Static Public Member Functions

static acceptor_tmpl create ()
 Creates an unbound acceptor socket with an open OS socket handle. More...
 
- Static Public Member Functions inherited from sockpp::acceptor
static acceptor create (int domain)
 Creates an unbound acceptor socket with an open OS socket handle. More...
 
- Static Public Member Functions inherited from sockpp::socket
static void initialize ()
 Initializes the socket (sockpp) library. More...
 
static void destroy ()
 Shuts down the socket library. More...
 
static socket create (int domain, int type, int protocol=0)
 Creates a socket with the specified communications characterics. More...
 
static std::tuple< socket, socketpair (int domain, int type, int protocol=0)
 Creates a pair of connected sockets. More...
 
static std::string error_str (int errNum)
 Gets a string describing the specified error. More...
 

Additional Inherited Members

- Protected Member Functions inherited from sockpp::socket
bool close_on_err ()
 Closes the socket without checking for errors or updating the last error. More...
 
void set_last_error ()
 Cache the last system error code into this object. More...
 
template<typename T >
check_ret (T ret) const
 Checks the value and if less than zero, sets last error. More...
 
template<typename T >
bool check_ret_bool (T ret) const
 Checks the value and if less than zero, sets last error. More...
 
socket_t check_socket (socket_t ret) const
 Checks the value and if it is not a valid socket, sets last error. More...
 
bool check_socket_bool (socket_t ret) const
 Checks the value and if it is INVALID_SOCKET, sets last error. More...
 
- Static Protected Member Functions inherited from sockpp::acceptor
static socket_t create_handle (int domain)
 Creates an underlying acceptor socket. More...
 
- Static Protected Member Functions inherited from sockpp::socket
static int get_last_error ()
 OS-specific means to retrieve the last error from an operation. More...
 
- Static Protected Attributes inherited from sockpp::acceptor
static const int DFLT_QUE_SIZE = 4
 The default listener queue size. More...
 

Detailed Description

template<typename STREAM_SOCK, typename ADDR = typename STREAM_SOCK::addr_t>
class sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >

Base template class for streaming servers of specific address families.

This is a base for creating socket acceptor classes for an individual family. In most cases, all that is needed is a type definition specifying which addresses type should be used to receive incoming connections, like: using tcp_acceptor = acceptor_tmpl<tcp_socket>;

Member Typedef Documentation

◆ addr_t

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
using sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::addr_t = ADDR

The type of address for the acceptor and streams.

◆ stream_sock_t

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
using sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::stream_sock_t = STREAM_SOCK

The type of streaming socket from the acceptor.

Constructor & Destructor Documentation

◆ acceptor_tmpl() [1/3]

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::acceptor_tmpl ( const addr_t addr,
int  queSize = DFLT_QUE_SIZE 
)
inline

Creates a acceptor and starts it listening on the specified address.

Parameters
addrThe TCP address on which to listen.
queSizeThe listener queue size.

◆ acceptor_tmpl() [2/3]

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::acceptor_tmpl ( in_port_t  port,
int  queSize = DFLT_QUE_SIZE 
)
inline

Creates a acceptor and starts it listening on the specified port.

The acceptor binds to the specified port for any address on the local host.

Parameters
portThe TCP port on which to listen.
queSizeThe listener queue size.

◆ acceptor_tmpl() [3/3]

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::acceptor_tmpl ( acceptor_tmpl< STREAM_SOCK, ADDR > &&  acc)
inline

Move constructor.

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

Parameters
accAnother acceptor

Member Function Documentation

◆ accept()

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
stream_sock_t sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::accept ( addr_t clientAddr = nullptr)
inline

Accepts an incoming 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 tcp_socket to the remote client.

◆ address()

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
addr_t sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::address ( ) const
inline

Gets the local address to which we are bound.

Returns
The local address to which we are bound.

◆ bind()

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
bool sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::bind ( const addr_t addr)
inline

Binds the socket to the specified address.

Parameters
addrThe address to which we get bound.
Returns
true on success, false on error

◆ create()

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
static acceptor_tmpl sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::create ( )
inlinestatic

Creates an unbound acceptor socket with an open OS socket handle.

An application would need to manually bind and listen to this acceptor to get incoming connections.

Returns
An open, but unbound acceptor socket.

◆ open() [1/2]

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
bool sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::open ( const addr_t addr,
int  queSize = DFLT_QUE_SIZE 
)
inline

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.
Returns
true on success, false on error

◆ open() [2/2]

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
bool sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::open ( in_port_t  port,
int  queSize = DFLT_QUE_SIZE 
)
inline

Opens the acceptor socket, binds the socket to all adapters and starts it listening.

Parameters
portThe TCP port on which to listen.
queSizeThe listener queue size.
Returns
true on success, false on error

◆ operator=()

template<typename STREAM_SOCK , typename ADDR = typename STREAM_SOCK::addr_t>
acceptor_tmpl& sockpp::acceptor_tmpl< STREAM_SOCK, ADDR >::operator= ( acceptor_tmpl< STREAM_SOCK, ADDR > &&  rhs)
inline

Move assignment.

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

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