uvco 0.1
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | List of all members
uvco::TcpServer Class Reference

#include <tcp.h>

Inheritance diagram for uvco::TcpServer:
Inheritance graph
[legend]
Collaboration diagram for uvco::TcpServer:
Collaboration graph
[legend]

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
 
 StreamServerBase (StreamServerBase &&)=default
 
StreamServerBaseoperator= (const StreamServerBase &)=delete
 
StreamServerBaseoperator= (StreamServerBase &&)=default
 
 ~StreamServerBase ()
 
MultiPromise< TcpStreamlisten (int backlog=128)
 
Promise< void > close ()
 Close server and stop accepting client connections; must be awaited.
 

Private Member Functions

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

Additional Inherited Members

- Protected Member Functions inherited from uvco::StreamServerBase< uv_tcp_t, TcpStream >
 StreamServerBase (std::unique_ptr< uv_tcp_t > socket)
 
- 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.

108 : StreamServerBase{std::make_unique<uv_tcp_t>()} {
109 uv_tcp_init(loop.uvloop(), socket_.get());
110 const auto *sockaddr = bindAddress.sockaddr();
111 const int flags = ipv6Only ? UV_TCP_IPV6ONLY : 0;
112 bind(sockaddr, flags);
113}
std::unique_ptr< uv_tcp_t > socket_
Definition stream_server_base.h:59
StreamServerBase(const StreamServerBase &)=delete
void bind(const struct sockaddr *addr, int flags)
Definition tcp.cc:115

◆ 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
115 {
116 const uv_status status = uv_tcp_bind(socket_.get(), addr, flags);
117 if (status != 0) {
118 throw UvcoException{status, "TcpServer::bind()"};
119 }
120}
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: