uvco 0.1
Loading...
Searching...
No Matches
uvco::TcpServer Class Reference

#include <tcp.h>

Inheritance diagram for uvco::TcpServer:
Collaboration diagram for uvco::TcpServer:

Public Member Functions

 TcpServer (const Loop &loop, AddressHandle bindAddress, bool ipv6Only=false)
 Sets up and bind socket to address.
 TcpServer (const TcpServer &)=delete
 TcpServer (TcpServer &&)=default
TcpServeroperator= (const TcpServer &)=delete
TcpServeroperator= (TcpServer &&)=default
 ~TcpServer ()=default
Public Member Functions inherited from uvco::StreamServerBase< uv_tcp_t, TcpStream >
 StreamServerBase (const StreamServerBase &)=delete
StreamServerBaseoperator= (const StreamServerBase &)=delete
 ~StreamServerBase ()
MultiPromise< TcpStreamlisten (int backlog=128)
AddressHandle getSockname () const
 Get the address the server is bound to.
void close ()

Private Member Functions

void bind (const struct sockaddr *addr, int flags)

Additional Inherited Members

Protected Attributes inherited from uvco::StreamServerBase< uv_tcp_t, TcpStream >
std::unique_ptr< uv_tcp_t > socket_

Detailed Description

A TCP server accepts client connections by listening on a specific bind address.

Constructor & Destructor Documentation

◆ TcpServer() [1/3]

uvco::TcpServer::TcpServer ( const Loop & loop,
AddressHandle bindAddress,
bool ipv6Only = false )

Sets up and bind socket to address.

173 : StreamServerBase{std::make_unique<uv_tcp_t>()} {
174 uv_tcp_init(loop.uvloop(), socket_.get());
175 const auto *sockaddr = bindAddress.sockaddr();
176 const int flags = ipv6Only ? UV_TCP_IPV6ONLY : 0;
177 bind(sockaddr, flags);
178}
std::unique_ptr< uv_tcp_t > socket_
Definition stream_server_base.h:66
StreamServerBase(const StreamServerBase &)=delete
void bind(const struct sockaddr *addr, int flags)
Definition tcp.cc:180

◆ TcpServer() [2/3]

uvco::TcpServer::TcpServer ( const TcpServer & )
delete

◆ TcpServer() [3/3]

uvco::TcpServer::TcpServer ( TcpServer && )
default

◆ ~TcpServer()

uvco::TcpServer::~TcpServer ( )
default

Member Function Documentation

◆ bind()

void uvco::TcpServer::bind ( const struct sockaddr * addr,
int flags )
private
180 {
181 const uv_status status = uv_tcp_bind(socket_.get(), addr, flags);
182 if (status != 0) {
183 throw UvcoException{status, "TcpServer::bind()"};
184 }
185}
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22

◆ operator=() [1/2]

TcpServer & uvco::TcpServer::operator= ( const TcpServer & )
delete

◆ operator=() [2/2]

TcpServer & uvco::TcpServer::operator= ( TcpServer && )
default

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