libcaf  0.15.5
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  asio_acceptor
 An acceptor is responsible for accepting incoming connections. More...
 
class  asio_multiplexer
 A wrapper for the boost::asio multiplexer. More...
 
class  asio_stream
 A stream capable of both reading and writing. 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...
 
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  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...
 
struct  tcp_policy
 Policy object for wrapping default TCP operations. More...
 

Typedefs

using error_code = boost::system::error_code
 Low-level error code.
 
using io_service = boost::asio::io_service
 Low-level backend for IO multiplexing.
 
using asio_tcp_socket = boost::asio::ip::tcp::socket
 Low-level socket type used as default.
 
using asio_tcp_socket_acceptor = boost::asio::ip::tcp::acceptor
 Low-level socket type used as default.
 
using setsockopt_ptr = const void *
 
using socket_send_ptr = const void *
 
using socket_recv_ptr = void *
 
using multiplexer_data = pollfd
 
using multiplexer_poll_shadow_data = std::vector< event_handler * >
 
using native_socket_acceptor = native_socket
 Platform-specific native acceptor socket type.
 
using read_some_fun = decltype(read_some)*
 Function signature of read_some.
 
using write_some_fun = decltype(write_some)*
 Function signature of wite_some.
 
using try_accept_fun = decltype(try_accept)*
 Function signature of try_accept.
 
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 native_socket = int
 

Enumerations

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

Functions

template<class T >
connection_handle conn_hdl_from_socket (T &sock)
 
template<class T >
accept_handle accept_hdl_from_socket (T &sock)
 
expected< asio_tcp_socketnew_tcp_connection (io_service &ios, const std::string &host, uint16_t port)
 
error ip_bind (asio_tcp_socket_acceptor &fd, uint16_t port, const char *addr, bool reuse_addr)
 
void closesocket (int fd)
 
int last_socket_error ()
 
bool would_block_or_temporarily_unavailable (int errcode)
 
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.
 
bool is_error (ssize_t res, bool is_nonblock)
 Convenience functions for checking the result of recv or send.
 
rw_state read_some (size_t &result, native_socket fd, void *buf, size_t len)
 Reads up to len bytes from fd, writing the received data to buf. More...
 
rw_state write_some (size_t &result, native_socket fd, const void *buf, size_t len)
 Writes up to len bytes from buf to fd. More...
 
bool try_accept (native_socket &result, native_socket fd)
 Tries to accept a new connection from fd. More...
 
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.
 
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)
 
int64_t int64_from_native_socket (native_socket sock)
 
std::string to_string (operation op)
 

Variables

constexpr int ec_out_of_memory = ENOMEM
 
constexpr int ec_interrupted_syscall = EINTR
 
constexpr int no_sigpipe_socket_flag = 0
 
constexpr int no_sigpipe_io_flag = MSG_NOSIGNAL
 
constexpr short input_mask = POLLIN | POLLPRI
 
constexpr short error_mask = POLLRDHUP | POLLERR | POLLHUP | POLLNVAL
 
constexpr short output_mask = POLLOUT
 
constexpr native_socket invalid_native_socket = -1
 

Detailed Description

Contains classes and functions used for network abstraction.

Enumeration Type Documentation

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

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.

rw_state caf::io::network::read_some ( size_t &  result,
native_socket  fd,
void *  buf,
size_t  len 
)

Reads up to len bytes from fd, writing the received data to buf.

Returns true as long as fd is readable and false if the socket has been closed or an IO error occured. The number of read bytes is stored in result (can be 0).

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

Enables or disables Nagle's algorithm on fd.

Exceptions
network_error
bool caf::io::network::try_accept ( native_socket &  result,
native_socket  fd 
)

Tries to accept a new connection from fd.

On success, the new connection is stored in result. Returns true as long as

rw_state caf::io::network::write_some ( size_t &  result,
native_socket  fd,
const void *  buf,
size_t  len 
)

Writes up to len bytes from buf to fd.

Returns true as long as fd is readable and false if the socket has been closed or an IO error occured. The number of written bytes is stored in result (can be 0).