libcaf
0.13.2
|
Contains all network-related classes and functions. More...
Classes | |
class | accept_handle |
Generic handle type for managing incoming connections. More... | |
struct | acceptor_closed_msg |
Signalizes that a broker acceptor has been closed. More... | |
class | basp_broker |
A broker implementation for the Binary Actor System Protocol (BASP). More... | |
class | broker |
A broker mediates between actor systems and other components in the network. More... | |
struct | connection_closed_msg |
Signalizes that a broker connection has been closed. More... | |
class | connection_handle |
Generic handle type for identifying connections. More... | |
class | hook |
Interface to define hooks into the IO layer. More... | |
class | middleman |
Manages brokers and network backends. More... | |
struct | new_connection_msg |
Signalizes a newly accepted connection from a broker. More... | |
struct | new_data_msg |
Signalizes newly arrived data for a broker. More... | |
Typedefs | |
using | broker_ptr = intrusive_ptr< broker > |
using | middleman_actor = typed_actor< replies_to< put_atom, actor_addr, uint16_t, std::string, bool >::with_either< ok_atom, uint16_t >::or_else< error_atom, std::string >, replies_to< put_atom, actor_addr, uint16_t, std::string >::with_either< ok_atom, uint16_t >::or_else< error_atom, std::string >, replies_to< put_atom, actor_addr, uint16_t, bool >::with_either< ok_atom, uint16_t >::or_else< error_atom, std::string >, replies_to< put_atom, actor_addr, uint16_t >::with_either< ok_atom, uint16_t >::or_else< error_atom, std::string >, replies_to< get_atom, std::string, uint16_t >::with_either< ok_atom, actor_addr >::or_else< error_atom, std::string >, replies_to< get_atom, std::string, uint16_t, std::set< std::string >>::with_either< ok_atom, actor_addr >::or_else< error_atom, std::string >, replies_to< delete_atom, actor_addr >::with_either< ok_atom >::or_else< error_atom, std::string >, replies_to< delete_atom, actor_addr, uint16_t >::with_either< ok_atom >::or_else< error_atom, std::string >> |
A message passing interface for asynchronous networking operations. More... | |
Enumerations | |
enum | receive_policy_flag { at_least, at_most, exactly } |
Functions | |
void | max_msg_size (size_t size) |
Sets the maximum size of a message over network. More... | |
size_t | max_msg_size () |
Queries the maximum size of messages over network. More... | |
middleman_actor | get_middleman_actor () |
Returns a handle for asynchronous networking operations. | |
uint16_t | publish_impl (abstract_actor_ptr whom, uint16_t port, const char *in, bool reuse_addr) |
uint16_t | publish (caf::actor whom, uint16_t port, const char *in=nullptr, bool reuse_addr=false) |
Publishes whom at port . More... | |
template<class... Sigs> | |
uint16_t | typed_publish (typed_actor< Sigs...> whom, uint16_t port, const char *in=nullptr, bool reuse_addr=false) |
uint16_t | publish_local_groups (uint16_t port, const char *addr=nullptr) |
Makes all local groups accessible via network on address addr and port . More... | |
abstract_actor_ptr | remote_actor_impl (std::set< std::string > ifs, const std::string &host, uint16_t port) |
actor | remote_actor (const std::string &host, uint16_t port) |
Establish a new connection to the actor at host on given port . More... | |
template<class ActorHandle > | |
ActorHandle | typed_remote_actor (const std::string &host, uint16_t port) |
Establish a new connection to the typed actor at host on given port . More... | |
group | remote_group (const std::string &group_uri) |
<group-name><host>:<port> | |
group | remote_group (const std::string &group_identifier, const std::string &host, uint16_t port) |
template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
actor | spawn_io (F fun, Ts &&...xs) |
Spawns a new functor-based broker. | |
template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
actor | spawn_io_client (F fun, const std::string &host, uint16_t port, Ts &&...xs) |
Spawns a new functor-based broker connecting to host:port . | |
template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
actor | spawn_io_server (F fun, uint16_t port, Ts &&...xs) |
Spawns a new broker as server running on given port . | |
void | unpublish_impl (const actor_addr &whom, uint16_t port, bool block_caller) |
template<class Handle > | |
void | unpublish (const Handle &whom, uint16_t port=0) |
Unpublishes whom by closing port or all assigned ports if port == 0 . More... | |
Contains all network-related classes and functions.
using caf::io::middleman_actor = typedef typed_actor< replies_to<put_atom, actor_addr, uint16_t, std::string, bool> ::with_either<ok_atom, uint16_t> ::or_else<error_atom, std::string>, replies_to<put_atom, actor_addr, uint16_t, std::string> ::with_either<ok_atom, uint16_t> ::or_else<error_atom, std::string>, replies_to<put_atom, actor_addr, uint16_t, bool> ::with_either<ok_atom, uint16_t> ::or_else<error_atom, std::string>, replies_to<put_atom, actor_addr, uint16_t> ::with_either<ok_atom, uint16_t> ::or_else<error_atom, std::string>, replies_to<get_atom, std::string, uint16_t> ::with_either<ok_atom, actor_addr> ::or_else<error_atom, std::string>, replies_to<get_atom, std::string, uint16_t, std::set<std::string>> ::with_either<ok_atom, actor_addr> ::or_else<error_atom, std::string>, replies_to<delete_atom, actor_addr> ::with_either<ok_atom> ::or_else<error_atom, std::string>, replies_to<delete_atom, actor_addr, uint16_t> ::with_either<ok_atom> ::or_else<error_atom, std::string>> |
A message passing interface for asynchronous networking operations.
The interface implements the following pseudo code.
The middleman_actor
actor offers the following operations:
PUT
establishes a new port <-> actor
mapping and returns the actual port in use on success. Passing 0 as port instructs the OS to choose the next high-level port available for binding. Type | Name | Parameter Description |
---|---|---|
put_atom | Identifies PUT operations. | |
actor_addr | whom | Actor that should be published at given port. |
uint16_t | port | Unused TCP port or 0 for any. |
string | addr | Optional; IP address to listen to or INADDR_ANY |
bool | reuse_addr | Optional; enable SO_REUSEPORT option |
GET
queries a remote node and returns an actor_addr
to the remote actor on success. This handle must be cast to either actor
or typed_actor
using actor_cast
. Type | Name | Parameter Description |
---|---|---|
get_atom | Identifies GET operations. | |
string | hostname | Valid hostname or IP address. |
uint16_t | port | TCP port. |
set<string> | expected_ifs | Optional; Interface of typed remote actor. |
DELETE
removes either all port <-> actor
mappings for an actor or only a single one if the optional port
parameter is set. Type | Name | Parameter Description |
---|---|---|
delete_atom | Identifies DELETE operations. | |
actor_addr | whom | Published actor. |
uint16_t | port | Optional; remove only a single mapping. |
void caf::io::max_msg_size | ( | size_t | size | ) |
Sets the maximum size of a message over network.
size | The maximum number of bytes a message may occupy. |
size_t caf::io::max_msg_size | ( | ) |
Queries the maximum size of messages over network.
uint16_t caf::io::publish | ( | caf::actor | whom, |
uint16_t | port, | ||
const char * | in = nullptr , |
||
bool | reuse_addr = false |
||
) |
Publishes whom
at port
.
The connection is managed by the middleman.
whom | Actor that should be published at port . |
port | Unused TCP port. |
in | The IP address to listen to or INADDR_ANY if in == nullptr . |
bind()
. If port == 0
the OS chooses a random high-level port. bind_failure |
uint16_t caf::io::publish_local_groups | ( | uint16_t | port, |
const char * | addr = nullptr |
||
) |
Makes all local groups accessible via network on address addr
and port
.
bind()
. If port == 0
the OS chooses a random high-level port. bind_failure | |
network_error |
actor caf::io::remote_actor | ( | const std::string & | host, |
uint16_t | port | ||
) |
Establish a new connection to the actor at host
on given port
.
host | Valid hostname or IP address. |
port | TCP port. |
network_error | Thrown on connection error or when connecting to a typed actor. |
uint16_t caf::io::typed_publish | ( | typed_actor< Sigs...> | whom, |
uint16_t | port, | ||
const char * | in = nullptr , |
||
bool | reuse_addr = false |
||
) |
ActorHandle caf::io::typed_remote_actor | ( | const std::string & | host, |
uint16_t | port | ||
) |
Establish a new connection to the typed actor at host
on given port
.
host | Valid hostname or IP address. |
port | TCP port. |
network_error | Thrown on connection error or when connecting to an untyped otherwise unexpected actor. |
void caf::io::unpublish | ( | const Handle & | whom, |
uint16_t | port = 0 |
||
) |
Unpublishes whom
by closing port
or all assigned ports if port == 0
.
whom | Actor that should be unpublished at port . |
port | TCP port. |