|
C++ Actor Framework 0.19
|
Manages brokers and network backends. More...
#include <middleman.hpp>
Classes | |
| struct | background_task |
| Independent tasks that run in the background, usually in their own thread. More... | |
| struct | metric_singletons_t |
| Metrics that the middleman collects by default. More... | |
Public Types | |
| using | background_task_ptr = std::unique_ptr< background_task > |
| using | backend_pointer = std::unique_ptr< network::multiplexer > |
Smart pointer for network::multiplexer. | |
| using | backend_factory = std::function< backend_pointer()> |
| Used to initialize the backend during construction. | |
Public Types inherited from caf::actor_system::module | |
| enum | id_t { scheduler , middleman , openssl_manager , network_manager , num_ids } |
Public Member Functions | |
| expected< uint16_t > | open (uint16_t port, const char *in=nullptr, bool reuse=false) |
| Tries to open a port for other CAF instances to connect to. | |
| expected< void > | close (uint16_t port) |
Closes port port regardless of whether an actor is published to it. | |
| expected< node_id > | connect (std::string host, uint16_t port) |
| Tries to connect to given node. | |
| template<class Handle > | |
| expected< uint16_t > | publish (Handle &&whom, uint16_t port, const char *in=nullptr, bool reuse=false) |
Tries to publish whom at port and returns either an error or the bound port. | |
| expected< uint16_t > | publish_local_groups (uint16_t port, const char *in=nullptr, bool reuse=false) |
Makes all local groups accessible via network on address addr and port. | |
| template<class Handle > | |
| expected< void > | unpublish (const Handle &whom, uint16_t port=0) |
Unpublishes whom by closing port or all assigned ports if port == 0. | |
| template<class ActorHandle = actor> | |
| expected< ActorHandle > | remote_actor (std::string host, uint16_t port) |
Establish a new connection to the actor at host on given port. | |
| expected< group > | remote_group (const std::string &group_locator) |
| Tries to connect to a group that runs on a different node in the network. | |
| expected< group > | remote_group (const std::string &group_identifier, const std::string &host, uint16_t port) |
| Tries to connect to a group that runs on a different node in the network. | |
| actor_system & | system () |
| Returns the enclosing actor system. | |
| const actor_system_config & | config () const |
| Returns the systemw-wide configuration. | |
| middleman_actor | actor_handle () |
| Returns a handle to the actor managing the middleman singleton. | |
| template<class Impl > | |
| actor | named_broker (const std::string &name) |
Returns the broker associated with name or creates a new instance of type Impl. | |
| template<class F > | |
| void | run_later (F fun) |
Runs fun in the event loop of the middleman. | |
| virtual network::multiplexer & | backend ()=0 |
| Returns the IO backend used by this middleman. | |
| strong_actor_ptr | remote_lookup (std::string name, const node_id &nid) |
Returns the actor associated with name at nid or invalid_actor if nid is not connected or has no actor associated to this name. | |
| template<class Handle > | |
| expected< Handle > | remote_spawn (const node_id &nid, std::string name, message args, timespan timeout=timespan{std::chrono::minutes{1}}) |
| template<class Handle , class Rep , class Period > | |
| expected< Handle > | remote_spawn (const node_id &nid, std::string name, message args, std::chrono::duration< Rep, Period > timeout) |
| void | start () override |
| Starts any background threads needed by the module. | |
| void | stop () override |
| Stops all background threads of the module. | |
| void | init (actor_system_config &) override |
| Allows the module to change the configuration of the actor system during startup. | |
| id_t | id () const override |
| Returns the identifier of this module. | |
| void * | subtype_ptr () override |
| Returns a pointer to the subtype. | |
| void | monitor (const node_id &node, const actor_addr &observer) override |
Causes the module to send a node_down_msg to observer if this system loses connection to node. | |
| void | demonitor (const node_id &node, const actor_addr &observer) override |
Causes the module remove one entry for observer from the list of actors that receive a node_down_msg if this system loses connection to node. | |
| template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
| infer_handle_from_fun_t< F > | spawn_broker (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> | |
| expected< infer_handle_from_fun_t< F > > | spawn_client (F fun, const std::string &host, uint16_t port, Ts &&... xs) |
Returns a new functor-based broker connected to host:port or an error. | |
| template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
| expected< infer_handle_from_fun_t< F > > | spawn_server (F fun, uint16_t &port, Ts &&... xs) |
Spawns a new broker as server running on given port. | |
| template<spawn_options Os = no_spawn_options, class F = std::function<void(broker*)>, class... Ts> | |
| expected< infer_handle_from_fun_t< F > > | spawn_server (F fun, const uint16_t &port, Ts &&... xs) |
Spawns a new broker as server running on given port. | |
| virtual void | monitor (const node_id &node, const actor_addr &observer)=0 |
Causes the module to send a node_down_msg to observer if this system loses connection to node. | |
| virtual void | demonitor (const node_id &node, const actor_addr &observer)=0 |
Causes the module remove one entry for observer from the list of actors that receive a node_down_msg if this system loses connection to node. | |
Public Member Functions inherited from caf::actor_system::module | |
| const char * | name () const noexcept |
| Returns the human-readable name of the module. | |
| virtual void | start ()=0 |
| Starts any background threads needed by the module. | |
| virtual void | stop ()=0 |
| Stops all background threads of the module. | |
| virtual void | init (actor_system_config &)=0 |
| Allows the module to change the configuration of the actor system during startup. | |
| virtual id_t | id () const =0 |
| Returns the identifier of this module. | |
| virtual void * | subtype_ptr ()=0 |
| Returns a pointer to the subtype. | |
Static Public Member Functions | |
| static void | init_global_meta_objects () |
| Adds message types of the I/O module to the global meta object table. | |
| static void | add_module_options (actor_system_config &cfg) |
| Adds module-specific options to the config before loading the module. | |
| static actor_system::module * | make (actor_system &, detail::type_list<>) |
| Returns a middleman using the default network backend. | |
| template<class Backend > | |
| static actor_system::module * | make (actor_system &sys, detail::type_list< Backend >) |
Protected Member Functions | |
| middleman (actor_system &sys) | |
Friends | |
| class | actor_system |
Manages brokers and network backends.
|
overridevirtual |
Causes the module remove one entry for observer from the list of actors that receive a node_down_msg if this system loses connection to node.
Each call to monitor requires one call to demonitor in order to unsubscribe the observer completely.
Implements caf::actor_system::networking_module.
|
overridevirtual |
Returns the identifier of this module.
Implements caf::actor_system::module.
|
overridevirtual |
Allows the module to change the configuration of the actor system during startup.
Implements caf::actor_system::module.
|
overridevirtual |
Causes the module to send a node_down_msg to observer if this system loses connection to node.
Implements caf::actor_system::networking_module.
| expected< uint16_t > caf::io::middleman::publish | ( | Handle && | whom, |
| uint16_t | port, | ||
| const char * | in = nullptr, |
||
| bool | reuse = false |
||
| ) |
Tries to publish whom at port and returns either an error or the bound port.
| 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. |
| reuse | Create socket using SO_REUSEADDR. |
bind(). If port == 0 the OS chooses a random high-level port. | expected< uint16_t > caf::io::middleman::publish_local_groups | ( | uint16_t | port, |
| const char * | in = nullptr, |
||
| bool | reuse = false |
||
| ) |
Makes all local groups accessible via network on address addr and port.
bind(). If port == 0 the OS chooses a random high-level port. | expected< ActorHandle > caf::io::middleman::remote_actor | ( | 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. |
actor to the proxy instance representing a remote actor or an error. | expected< group > caf::io::middleman::remote_group | ( | const std::string & | group_identifier, |
| const std::string & | host, | ||
| uint16_t | port | ||
| ) |
Tries to connect to a group that runs on a different node in the network.
| group_identifier | Unique identifier of the group. |
| host | Hostname or IP address of the remote CAF node. |
| port | TCP port for connecting to the group name server of the node. |
We won't receive a second message, so we drop our behavior here to terminate the actor after both requests finish.
| expected< group > caf::io::middleman::remote_group | ( | const std::string & | group_locator | ) |
Tries to connect to a group that runs on a different node in the network.
| group_locator | Locator in the format <group-name>@<host>:<port>. |
| strong_actor_ptr caf::io::middleman::remote_lookup | ( | std::string | name, |
| const node_id & | nid | ||
| ) |
Returns the actor associated with name at nid or invalid_actor if nid is not connected or has no actor associated to this name.
nid responded to the lookup or an error occurred. | void caf::io::middleman::run_later | ( | F | fun | ) |
Runs fun in the event loop of the middleman.
| expected< infer_handle_from_fun_t< F > > caf::io::middleman::spawn_client | ( | F | fun, |
| const std::string & | host, | ||
| uint16_t | port, | ||
| Ts &&... | xs | ||
| ) |
Returns a new functor-based broker connected to host:port or an error.
| expected< infer_handle_from_fun_t< F > > caf::io::middleman::spawn_server | ( | F | fun, |
| const uint16_t & | port, | ||
| Ts &&... | xs | ||
| ) |
Spawns a new broker as server running on given port.
| expected< infer_handle_from_fun_t< F > > caf::io::middleman::spawn_server | ( | F | fun, |
| uint16_t & | port, | ||
| Ts &&... | xs | ||
| ) |
Spawns a new broker as server running on given port.
|
overridevirtual |
Starts any background threads needed by the module.
Implements caf::actor_system::module.
|
overridevirtual |
Stops all background threads of the module.
Implements caf::actor_system::module.
|
overridevirtual |
Returns a pointer to the subtype.
Implements caf::actor_system::module.
| expected< void > caf::io::middleman::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. |