LIBWIRE
Next-generation C++17 networking library.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Public Member Functions | List of all members
libwire::tcp::listener Class Reference

Restricted wrapper for TCP listening socket. More...

#include <listener.hpp>

Public Member Functions

 listener () noexcept=default
 Construct listener object. More...
 
 listener (const listener &)=delete
 
 listener (listener &&) noexcept=default
 
 listener (endpoint target, std::error_code &ec, unsigned backlog=internal_::socket::max_pending_connections) noexcept
 Construct listener and start accepting connections. More...
 
 listener (endpoint target, unsigned backlog=internal_::socket::max_pending_connections)
 
 ~listener ()=default
 
socket accept (std::error_code &ec) noexcept
 Accept first connection from listener queue and create socket for it. More...
 
void listen (endpoint target, std::error_code &ec, unsigned max_backlog=internal_::socket::max_pending_connections) noexcept
 Start listening for incoming connections on specified endpoint. More...
 
listeneroperator= (const listener &)=delete
 
listeneroperator= (listener &&) noexcept=default
 

Detailed Description

Restricted wrapper for TCP listening socket.

"Restricted" because it exposes only API required for server. You can start listening on port using listen() method and accept connection from queue using accept() method.

Quick usage example:

tcp::listener l{ipv4::any, 7777};
auto sock = l.accept();

Thread-safety

Definition at line 51 of file listener.hpp.

Constructor & Destructor Documentation

libwire::tcp::listener::listener ( )
defaultnoexcept

Construct listener object.

Note
Due to some details socket is not allocated when c-tor called.
libwire::tcp::listener::listener ( const listener )
delete
libwire::tcp::listener::listener ( listener &&  )
defaultnoexcept
libwire::tcp::listener::~listener ( )
default
libwire::tcp::listener::listener ( endpoint  target,
std::error_code &  ec,
unsigned  backlog = internal_::socket::max_pending_connections 
)
inlinenoexcept

Construct listener and start accepting connections.

See listen documentation for arguments description.

Definition at line 72 of file listener.hpp.

libwire::tcp::listener::listener ( endpoint  target,
unsigned  backlog = internal_::socket::max_pending_connections 
)
inline

Definition at line 77 of file listener.hpp.

Member Function Documentation

socket libwire::tcp::listener::accept ( std::error_code &  ec)
noexcept

Accept first connection from listener queue and create socket for it.

Any errors occurred (open sockets limit hit, for example) will be reported through ec argument.

void libwire::tcp::listener::listen ( endpoint  target,
std::error_code &  ec,
unsigned  max_backlog = internal_::socket::max_pending_connections 
)
noexcept

Start listening for incoming connections on specified endpoint.

backlog argument sets maximum size of pending connections queue.

Any errors occurred (invalid address or already used port, for example) will be reported through ec argument.

Implementation Note

This function combines bind() and listen() of underlying socket API.

listener& libwire::tcp::listener::operator= ( const listener )
delete
listener& libwire::tcp::listener::operator= ( listener &&  )
defaultnoexcept