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

#include <uds.h>

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

Public Member Functions

 UnixStreamServer (const UnixStreamServer &)=delete
 
 UnixStreamServer (UnixStreamServer &&)=default
 
UnixStreamServeroperator= (const UnixStreamServer &)=delete
 
UnixStreamServeroperator= (UnixStreamServer &&)=default
 
 ~UnixStreamServer ()=default
 
 UnixStreamServer (const Loop &loop, std::string_view bindPath, int flags=0)
 Construct and bind a Unix SOCK_STREAM socket.
 
void chmod (int mode)
 
- Public Member Functions inherited from uvco::StreamServerBase< uv_pipe_t, UnixStream >
 StreamServerBase (const StreamServerBase &)=delete
 
 StreamServerBase (StreamServerBase &&)=default
 
StreamServerBaseoperator= (const StreamServerBase &)=delete
 
StreamServerBaseoperator= (StreamServerBase &&)=default
 
 ~StreamServerBase ()
 
MultiPromise< UnixStreamlisten (int backlog=128)
 
Promise< void > close ()
 Close server and stop accepting client connections; must be awaited.
 

Additional Inherited Members

- Protected Member Functions inherited from uvco::StreamServerBase< uv_pipe_t, UnixStream >
 StreamServerBase (std::unique_ptr< uv_pipe_t > socket)
 
- Protected Attributes inherited from uvco::StreamServerBase< uv_pipe_t, UnixStream >
std::unique_ptr< uv_pipe_t > socket_
 

Detailed Description

A server that listens for incoming connections on a Unix domain socket (type SOCK_STREAM).

After constructing the server, call listen() to start listening. This will return a MultiPromise<UnixStream>, which will yield a new UnixStream for each incoming connection. The peer address can be obtained using the getPeerName() method on UnixStream.

Constructor & Destructor Documentation

◆ UnixStreamServer() [1/3]

uvco::UnixStreamServer::UnixStreamServer ( const UnixStreamServer )
delete

◆ UnixStreamServer() [2/3]

uvco::UnixStreamServer::UnixStreamServer ( UnixStreamServer &&  )
default

◆ ~UnixStreamServer()

uvco::UnixStreamServer::~UnixStreamServer ( )
default

◆ UnixStreamServer() [3/3]

uvco::UnixStreamServer::UnixStreamServer ( const Loop loop,
std::string_view  bindPath,
int  flags = 0 
)

Construct and bind a Unix SOCK_STREAM socket.

Parameters
loopThe loop to run on.
bindPathThe path to bind to.
flagsFlags to pass to uv_pipe_bind2. Can be UV_PIPE_NO_TRUNCATE.
27 : StreamServerBase{std::make_unique<uv_pipe_t>()} {
28 uv_pipe_init(loop.uvloop(), socket_.get(), 0);
29#if UV_VERSION_MAJOR == 1 && UV_VERSION_MINOR >= 46
30 const uv_status bindStatus =
31 uv_pipe_bind2(socket_.get(), bindPath.data(), bindPath.size(), flags);
32#else
33 const uv_status bindStatus = uv_pipe_bind(socket_.get(), bindPath.data());
34#endif
35 if (bindStatus != 0) {
36 throw UvcoException{bindStatus, "UnixStreamServer failed to bind"};
37 }
38}
std::unique_ptr< uv_pipe_t > socket_
Definition stream_server_base.h:59
StreamServerBase(const StreamServerBase &)=delete
int uv_status
Result of a libuv operation, an errno error code.
Definition internal_utils.h:22

Member Function Documentation

◆ chmod()

void uvco::UnixStreamServer::chmod ( int  mode)

Configure permissions for socket; flags may be either or a combination of UV_READABLE and UV_WRITABLE.

40{ uv_pipe_chmod(socket_.get(), mode); }

◆ operator=() [1/2]

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

◆ operator=() [2/2]

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

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