libcaf  0.16.0
Classes | Typedefs | Enumerations | Functions | Variables
caf::io::network Namespace Reference

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 event_mask_type = short
 
using multiplexer_data = pollfd
 
using multiplexer_poll_shadow_data = std::vector< event_handler * >
 
using address_listing = std::map< protocol::network, std::vector< std::string > >
 
using interfaces_map = std::map< std::string, address_listing >
 
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< size_t >::type
 
using native_socket = int
 

Enumerations

enum  operation {
  read,
  write,
  propagate_error
}
 Identifies network IO operations, i.e., read or write.
 
enum  rw_state {
  rw_state::success,
  rw_state::failure,
  rw_state::indeterminate
}
 Denotes the returned state of read and write operations on sockets. More...
 

Functions

connection_handle conn_hdl_from_socket (native_socket fd)
 
accept_handle accept_hdl_from_socket (native_socket fd)
 
expected< native_socket > new_tcp_connection (const std::string &host, uint16_t port, optional< protocol::network > preferred=none)
 
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, optional< protocol::network > preferred=none)
 
expected< std::pair< native_socket, protocol::network > > new_local_udp_endpoint_impl (uint16_t port, const char *addr, bool reuse_addr=false, optional< protocol::network > preferred=none)
 
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)
 
error load_endpoint (ip_endpoint &ep, uint32_t &f, std::string &h, uint16_t &p, size_t &l)
 
error save_endpoint (ip_endpoint &ep, uint32_t &f, std::string &h, uint16_t &p, size_t &l)
 
template<class Inspector >
Inspector::result_type inspect (Inspector &fun, ip_endpoint &ep)
 
int64_t int64_from_native_socket (native_socket sock)
 
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. More...
 
std::string last_socket_error_as_string ()
 Returns the last socket error as human-readable string.
 
std::pair< native_socket, native_socket > create_pipe ()
 Creates two connected sockets. More...
 
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 > tcp_nodelay (native_socket fd, bool new_value)
 Enables or disables Nagle's algorithm on fd. More...
 
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_CONNRESETerror on fd.
 
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.
 
bool is_error (signed_size_type res, bool is_nonblock)
 Convenience functions for checking the result of recv or send.
 
expected< uint16_t > local_port_of_fd (native_socket fd)
 Returns the locally assigned port of fd.
 
expected< std::string > local_addr_of_fd (native_socket fd)
 Returns the locally assigned address of fd.
 
expected< uint16_t > remote_port_of_fd (native_socket fd)
 Returns the port used by the remote host of fd.
 
expected< std::string > remote_addr_of_fd (native_socket fd)
 Returns the remote host address of fd.
 
std::string to_string (operation op)
 

Variables

const event_mask_type input_mask
 Defines the bitmask for input (read) socket events.
 
const event_mask_type output_mask
 Defines the bitmask for output (write) socket events.
 
const event_mask_type error_mask
 Defines the bitmask for error socket events.
 
const int ec_out_of_memory
 
const int ec_interrupted_syscall
 
const int no_sigpipe_socket_flag
 
const int no_sigpipe_io_flag
 
constexpr native_socket invalid_native_socket = -1
 

Detailed Description

Contains classes and functions used for network abstraction.

Enumeration Type Documentation

◆ rw_state

Denotes the returned state of read and write operations on sockets.

Enumerator
success 

Reports that bytes could be read or written.

failure 

Reports that the socket is closed or faulty.

indeterminate 

Reports that an empty buffer is in use and no operation was performed.

Function Documentation

◆ create_pipe()

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.

◆ tcp_nodelay()

expected<void> caf::io::network::tcp_nodelay ( native_socket  fd,
bool  new_value 
)

Enables or disables Nagle's algorithm on fd.

Exceptions
network_error

◆ would_block_or_temporarily_unavailable()

bool caf::io::network::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.