C++ Actor Framework 1.0.0
|
Contains classes and functions used for network abstraction. More...
Classes | |
class | acceptor |
An acceptor is responsible for accepting incoming connections. More... | |
class | acceptor_impl |
A concrete acceptor with a technology-dependent policy. More... | |
class | acceptor_manager |
An acceptor manager configures an acceptor and provides callbacks for incoming connections as well as for error handling. More... | |
class | datagram_handler_impl |
A concrete datagram_handler with a technology-dependent policy. More... | |
class | datagram_manager |
A datagram manager provides callbacks for outgoing datagrams as well as for error handling. More... | |
class | datagram_servant_impl |
Default datagram servant implementation. More... | |
class | doorman_impl |
Default doorman implementation. More... | |
class | event_handler |
A socket I/O event handler. More... | |
class | interfaces |
Utility class bundling access to network interface names and addresses. More... | |
struct | ip_endpoint |
A hashable wrapper for a sockaddr storage. More... | |
class | manager |
A manager configures an I/O device and provides callbacks for various I/O operations. More... | |
class | multiplexer |
Low-level backend for IO multiplexing. More... | |
class | pipe_reader |
An event handler for the internal event pipe. More... | |
struct | protocol |
Bundles protocol information for network and transport layer communication. More... | |
class | receive_buffer |
A container that does not call constructors and destructors for its values. More... | |
class | scribe_impl |
Default scribe implementation. More... | |
class | stream |
A stream capable of both reading and writing. More... | |
class | stream_impl |
A concrete stream with a technology-dependent policy for sending and receiving data from a socket. More... | |
class | stream_manager |
A stream manager configures an IO stream and provides callbacks for incoming data as well as for error handling. More... | |
Typedefs | |
using | address_listing = std::map<protocol::network, std::vector<std::string>> |
using | event_mask_type = short |
using | multiplexer_data = pollfd |
using | multiplexer_poll_shadow_data = std::vector<event_handler*> |
using | interfaces_map |
using | multiplexer_ptr = std::unique_ptr<multiplexer> |
using | setsockopt_ptr = const void* |
using | getsockopt_ptr = void* |
using | socket_send_ptr = const void* |
using | socket_recv_ptr = void* |
using | socket_size_type = unsigned |
using | signed_size_type = std::make_signed_t<size_t> |
using | native_socket = int |
Enumerations | |
enum class | operation { read , write , propagate_error } |
Identifies network IO operations, i.e., read or write. | |
enum class | rw_state { success , failure , indeterminate , want_read } |
Denotes the returned state of read and write operations on sockets. More... | |
Functions | |
int | add_flag (operation op, int bf) |
int | del_flag (operation op, int bf) |
template<int Family> | |
bool | ip_connect (native_socket fd, const std::string &host, uint16_t port) |
expected< native_socket > | new_tcp_connection (const std::string &host, uint16_t port, std::optional< protocol::network > preferred) |
template<class SockAddrType > | |
expected< void > | read_port (native_socket fd, SockAddrType &sa) |
expected< void > | set_inaddr_any (native_socket, sockaddr_in &sa) |
expected< void > | set_inaddr_any (native_socket fd, sockaddr_in6 &sa) |
template<int Family, int SockType = SOCK_STREAM> | |
expected< native_socket > | new_ip_acceptor_impl (uint16_t port, const char *addr, bool reuse_addr, bool any) |
expected< native_socket > | new_tcp_acceptor_impl (uint16_t port, const char *addr, bool reuse_addr) |
expected< std::pair< native_socket, ip_endpoint > > | new_remote_udp_endpoint_impl (const std::string &host, uint16_t port, std::optional< protocol::network > preferred) |
expected< std::pair< native_socket, protocol::network > > | new_local_udp_endpoint_impl (uint16_t port, const char *addr, bool reuse, std::optional< protocol::network > preferred) |
connection_handle | conn_hdl_from_socket (native_socket fd) |
accept_handle | accept_hdl_from_socket (native_socket fd) |
template<class T > | |
void * | vptr (T *ptr) |
void * | fetch_in_addr (int family, sockaddr *addr) |
int | fetch_addr_str (bool get_ipv4, bool get_ipv6, char(&buf)[INET6_ADDRSTRLEN], sockaddr *addr) |
template<class F > | |
void | for_each_address (bool get_ipv4, bool get_ipv6, F fun) |
bool | operator== (const ip_endpoint &lhs, const ip_endpoint &rhs) |
std::string | to_string (const ip_endpoint &ep) |
std::string | host (const ip_endpoint &ep) |
uint16_t | port (const ip_endpoint &ep) |
uint32_t | family (const ip_endpoint &ep) |
bool | is_ipv4 (const ip_endpoint &ep) |
bool | is_ipv6 (const ip_endpoint &ep) |
error_code< sec > | load_endpoint (ip_endpoint &ep, uint32_t &f, std::string &h, uint16_t &p, size_t &l) |
error_code< sec > | save_endpoint (ip_endpoint &ep, uint32_t &f, std::string &h, uint16_t &p, size_t &l) |
bool | operator!= (const ip_endpoint &lhs, const ip_endpoint &rhs) |
template<class Inspector > | |
bool | inspect (Inspector &f, ip_endpoint &x) |
int | last_socket_error () |
Returns the last socket error as an integer. | |
void | close_socket (native_socket fd) |
Close socket fd . | |
bool | would_block_or_temporarily_unavailable (int errcode) |
Returns true if errcode indicates that an operation would block or return nothing at the moment and can be tried again at a later point. | |
string | last_socket_error_as_string () |
Returns the last socket error as human-readable string. | |
string | socket_error_as_string (int errcode) |
Returns a human-readable string for a given socket error. | |
expected< void > | child_process_inherit (native_socket fd, bool new_value) |
Sets fd to be inherited by child processes if new_value == true or not if new_value == false . | |
expected< void > | keepalive (native_socket fd, bool new_value) |
Enables keepalive on fd . Throws network_error on error. | |
expected< void > | nonblocking (native_socket fd, bool new_value) |
Sets fd to nonblocking if set_nonblocking == true or to blocking if set_nonblocking == false throws network_error on error. | |
expected< void > | allow_sigpipe (native_socket fd, bool new_value) |
Enables or disables SIGPIPE events from fd . | |
expected< void > | allow_udp_connreset (native_socket fd, bool new_value) |
Enables or disables SIO_UDP_CONNRESET error on fd . | |
std::pair< native_socket, native_socket > | create_pipe () |
Creates two connected sockets. | |
expected< int > | send_buffer_size (native_socket fd) |
Get the socket buffer size for fd . | |
expected< void > | send_buffer_size (native_socket fd, int new_value) |
Set the socket buffer size for fd . | |
expected< void > | tcp_nodelay (native_socket fd, bool new_value) |
Enables or disables Nagle's algorithm on fd . | |
bool | is_error (signed_size_type res, bool is_nonblock) |
Convenience functions for checking the result of recv or send . | |
expected< string > | local_addr_of_fd (native_socket fd) |
Returns the locally assigned address of fd . | |
expected< uint16_t > | local_port_of_fd (native_socket fd) |
Returns the locally assigned port of fd . | |
expected< string > | remote_addr_of_fd (native_socket fd) |
Returns the remote host address of fd . | |
expected< uint16_t > | remote_port_of_fd (native_socket fd) |
Returns the port used by the remote host of fd . | |
void | shutdown_read (native_socket fd) |
Closes the read channel for a socket. | |
void | shutdown_write (native_socket fd) |
Closes the write channel for a socket. | |
void | shutdown_both (native_socket fd) |
Closes the both read and write channel for a socket. | |
int64_t | int64_from_native_socket (native_socket sock) |
CAF_IO_EXPORT std::string | to_string (operation) |
CAF_IO_EXPORT bool | from_string (std::string_view, operation &) |
CAF_IO_EXPORT bool | from_integer (std::underlying_type_t< operation >, operation &) |
template<class Inspector > | |
bool | inspect (Inspector &f, operation &x) |
std::string | to_string (const protocol &x) |
Converts a protocol into a transport/network string representation, e.g., "TCP/IPv4". | |
constexpr bool | operator== (const protocol &lhs, const protocol &rhs) noexcept |
constexpr bool | operator!= (const protocol &lhs, const protocol &rhs) noexcept |
std::string | to_string (protocol::transport x) |
template<class Inspector > | |
bool | inspect (Inspector &f, protocol::transport &x) |
std::string | to_string (protocol::network x) |
template<class Inspector > | |
bool | inspect (Inspector &f, protocol::network &x) |
template<class Inspector > | |
bool | inspect (Inspector &f, protocol &x) |
Contains classes and functions used for network abstraction.
typedef std::map< std::string, address_listing > caf::io::network::interfaces_map |
|
strong |
Denotes the returned state of read and write operations on sockets.
CAF_IO_EXPORT expected< void > caf::io::network::child_process_inherit | ( | native_socket | fd, |
bool | new_value ) |
Sets fd to be inherited by child processes if new_value == true
or not if new_value == false
.
Not implemented on Windows. throws network_error
on error
CAF_IO_EXPORT std::pair< native_socket, native_socket > caf::io::network::create_pipe | ( | ) |
Creates two connected sockets.
The former is the read handle and the latter is the write handle.
CAF_IO_EXPORT expected< void > caf::io::network::tcp_nodelay | ( | native_socket | fd, |
bool | new_value ) |
Enables or disables Nagle's algorithm on fd
.
network_error |