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

#include <uds.h>

Inheritance diagram for uvco::UnixStreamServer:
Collaboration diagram for uvco::UnixStreamServer:

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
StreamServerBaseoperator= (const StreamServerBase &)=delete
 ~StreamServerBase ()
MultiPromise< UnixStreamlisten (int backlog=128)
AddressHandle getSockname () const
 Get the address the server is bound to.
void close ()

Additional Inherited Members

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.
26 : StreamServerBase{std::make_unique<uv_pipe_t>()} {
27 uv_pipe_init(loop.uvloop(), socket_.get(), 0);
28#if UV_VERSION_MAJOR == 1 && UV_VERSION_MINOR >= 46
29 const uv_status bindStatus =
30 uv_pipe_bind2(socket_.get(), bindPath.data(), bindPath.size(), flags);
31#else
32 const uv_status bindStatus = uv_pipe_bind(socket_.get(), bindPath.data());
33#endif
34 if (bindStatus != 0) {
35 throw UvcoException{bindStatus, "UnixStreamServer failed to bind"};
36 }
37}
std::unique_ptr< uv_pipe_t > socket_
Definition stream_server_base.h:66
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.

39{ 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: