C++ Actor Framework  0.18
Classes | Public Types | Public Member Functions | Friends | List of all members
caf::actor_system Class Reference

Actor environment including scheduler, registry, and optional components such as a middleman. More...

#include <actor_system.hpp>

Collaboration diagram for caf::actor_system:
Collaboration graph

Classes

struct  actor_metric_families_t
 Metrics that some actors may collect in addition to the base metrics. More...
 
struct  base_metrics_t
 Metrics that the actor system collects by default. More...
 
class  module
 An (optional) component of the actor system. More...
 
class  networking_module
 An (optional) component of the actor system with networking capabilities. More...
 

Public Types

using module_ptr = std::unique_ptr< module >
 
using module_array = std::array< module_ptr, module::num_ids >
 
using mpi = std::set< std::string >
 A message passing interface (MPI) in run-time checkable representation.
 

Public Member Functions

const strong_actor_ptrspawn_serv () const
 Returns the internal actor for dynamic spawn operations.
 
const strong_actor_ptrconfig_serv () const
 Returns the internal actor for storing the runtime configuration for this actor system. More...
 
 actor_system (const actor_system &)=delete
 
actor_systemoperator= (const actor_system &)=delete
 
 actor_system (actor_system_config &cfg)
 
template<class T , class E = typename std::enable_if<!is_typed_actor<T>::value>::type>
mpi message_types (detail::type_list< T >) const
 
template<class... Ts>
mpi message_types (detail::type_list< typed_actor< Ts... >>) const
 
template<class T , class E = typename std::enable_if<!detail::is_type_list<T>::value>::type>
mpi message_types (const T &) const
 
template<class T >
mpi message_types () const
 Returns a string representation of the messaging interface using portable names;.
 
bool assignable (const mpi &xs, const mpi &ys) const
 Returns whether actor handles described by xs can be assigned to actor handles described by ys. More...
 
template<class T >
bool assignable (const std::set< std::string > &xs) const
 Returns whether actor handles described by xs can be assigned to actor handles of type T. More...
 
telemetry::metric_registrymetrics () noexcept
 Returns the metrics registry for this system.
 
const telemetry::metric_registrymetrics () const noexcept
 Returns the metrics registry for this system.
 
const node_idnode () const
 Returns the host-local identifier for this system.
 
scheduler::abstract_coordinatorscheduler ()
 Returns the scheduler instance.
 
caf::loggerlogger ()
 Returns the system-wide event logger.
 
actor_registryregistry ()
 Returns the system-wide actor registry.
 
std::string render (const error &x) const
 Returns a string representation for err.
 
group_manager & groups ()
 Returns the system-wide group manager.
 
bool has_middleman () const
 Returns true if the I/O module is available, false otherwise.
 
io::middlemanmiddleman ()
 Returns the middleman instance from the I/O module. More...
 
bool has_openssl_manager () const
 Returns true if the openssl module is available, false otherwise.
 
openssl::manager & openssl_manager () const
 Returns the manager instance from the OpenSSL module. More...
 
bool has_network_manager () const noexcept
 Returns true if the network module is available, false otherwise.
 
net::middleman & network_manager ()
 Returns the network manager (middleman) instance. More...
 
scoped_execution_unitdummy_execution_unit ()
 Returns a dummy execution unit that forwards everything to the scheduler. More...
 
actor_id next_actor_id ()
 Returns a new actor ID.
 
actor_id latest_actor_id () const
 Returns the last given actor ID.
 
void await_all_actors_done () const
 Blocks this caller until all actors are done.
 
void monitor (const node_id &node, const actor_addr &observer)
 Send a node_down_msg to observer if this system loses connection to node. More...
 
void demonitor (const node_id &node, const actor_addr &observer)
 Removes observer from the list of actors that receive a node_down_msg if this system loses connection to node. More...
 
template<class C , spawn_options Os, class... Ts>
infer_handle_from_class_t< C > spawn_class (actor_config &cfg, Ts &&... xs)
 Called by spawn when used to create a class-based actor to apply automatic conversions to xs before spawning the actor. More...
 
template<class C , spawn_options Os = no_spawn_options, class... Ts>
infer_handle_from_class_t< C > spawn (Ts &&... xs)
 Returns a new actor of type C using xs... as constructor arguments. More...
 
template<spawn_options Os = no_spawn_options, class F , class... Ts>
infer_handle_from_fun_t< F > spawn (F fun, Ts &&... xs)
 Returns a new functor-based actor. More...
 
template<class Handle , class E = typename std::enable_if<is_handle<Handle>::value>::type>
expected< Handle > spawn (const std::string &name, message args, execution_unit *ctx=nullptr, bool check_interface=true, const mpi *expected_ifs=nullptr)
 Returns a new actor with run-time type name, constructed with the arguments stored in args. More...
 
template<spawn_options Os = no_spawn_options, class F , class... Ts>
infer_handle_from_fun_t< F > spawn_in_groups (std::initializer_list< group > gs, F fun, Ts &&... xs)
 Returns a new functor-based actor subscribed to all groups in gs.
 
template<spawn_options Os = no_spawn_options, class Gs , class F , class... Ts>
infer_handle_from_fun_t< F > spawn_in_groups (const Gs &gs, F fun, Ts &&... xs)
 Returns a new functor-based actor subscribed to all groups in gs.
 
template<spawn_options Os = no_spawn_options, class F , class... Ts>
infer_handle_from_fun_t< F > spawn_in_group (const group &grp, F fun, Ts &&... xs)
 Returns a new functor-based actor subscribed to all groups in gs.
 
template<class T , spawn_options Os = no_spawn_options, class... Ts>
infer_handle_from_class_t< T > spawn_in_groups (std::initializer_list< group > gs, Ts &&... xs)
 Returns a new class-based actor subscribed to all groups in gs.
 
template<class T , spawn_options Os = no_spawn_options, class Gs , class... Ts>
infer_handle_from_class_t< T > spawn_in_groups (const Gs &gs, Ts &&... xs)
 Returns a new class-based actor subscribed to all groups in gs.
 
template<class T , spawn_options Os = no_spawn_options, class... Ts>
infer_handle_from_class_t< T > spawn_in_group (const group &grp, Ts &&... xs)
 Returns a new class-based actor subscribed to all groups in gs.
 
bool await_actors_before_shutdown () const
 Returns whether this actor system calls await_all_actors_done in its destructor before shutting down. More...
 
void await_actors_before_shutdown (bool x)
 Configures whether this actor system calls await_all_actors_done in its destructor before shutting down. More...
 
const actor_system_configconfig () const
 Returns the configuration of this actor system.
 
actor_clockclock () noexcept
 Returns the system-wide clock.
 
size_t detached_actors ()
 Returns the number of detached actors.
 

Friends

class logger
 
class io::middleman
 
class net::middleman
 
class abstract_actor
 

Detailed Description

Actor environment including scheduler, registry, and optional components such as a middleman.

Examples:
dancing_kirby.cpp, dining_philosophers.cpp, and hello_world.cpp.

Constructor & Destructor Documentation

◆ actor_system()

caf::actor_system::actor_system ( actor_system_config cfg)
explicit
Warning
The system stores a reference to cfg, which means the config object must outlive the actor system.

Member Function Documentation

◆ assignable() [1/2]

bool caf::actor_system::assignable ( const mpi xs,
const mpi ys 
) const

Returns whether actor handles described by xs can be assigned to actor handles described by ys.

Attention
This feature is experimental.

◆ assignable() [2/2]

template<class T >
bool caf::actor_system::assignable ( const std::set< std::string > &  xs) const

Returns whether actor handles described by xs can be assigned to actor handles of type T.

Attention
This feature is experimental.

◆ await_actors_before_shutdown() [1/2]

bool caf::actor_system::await_actors_before_shutdown ( ) const

Returns whether this actor system calls await_all_actors_done in its destructor before shutting down.

◆ await_actors_before_shutdown() [2/2]

void caf::actor_system::await_actors_before_shutdown ( bool  x)

Configures whether this actor system calls await_all_actors_done in its destructor before shutting down.

◆ config_serv()

const strong_actor_ptr& caf::actor_system::config_serv ( ) const

Returns the internal actor for storing the runtime configuration for this actor system.

◆ demonitor()

void caf::actor_system::demonitor ( const node_id node,
const actor_addr observer 
)

Removes observer from the list of actors that receive a node_down_msg if this system loses connection to node.

◆ dummy_execution_unit()

scoped_execution_unit* caf::actor_system::dummy_execution_unit ( )

Returns a dummy execution unit that forwards everything to the scheduler.

◆ middleman()

io::middleman& caf::actor_system::middleman ( )

Returns the middleman instance from the I/O module.

Exceptions
<tt>std::logic_error</tt>if module is not loaded.

◆ monitor()

void caf::actor_system::monitor ( const node_id node,
const actor_addr observer 
)

Send a node_down_msg to observer if this system loses connection to node.

Note
Calling this function n times causes the system to send node_down_msg n times to the observer. In order to not receive the messages, the observer must call demonitor n times.

◆ network_manager()

net::middleman& caf::actor_system::network_manager ( )

Returns the network manager (middleman) instance.

Exceptions
<tt>std::logic_error</tt>if module is not loaded.

◆ openssl_manager()

openssl::manager& caf::actor_system::openssl_manager ( ) const

Returns the manager instance from the OpenSSL module.

Exceptions
<tt>std::logic_error</tt>if module is not loaded.

◆ spawn() [1/3]

template<class C , spawn_options Os = no_spawn_options, class... Ts>
infer_handle_from_class_t<C> caf::actor_system::spawn ( Ts &&...  xs)

Returns a new actor of type C using xs... as constructor arguments.

The behavior of spawn can be modified by setting Os, e.g., to opt-out of the cooperative scheduling.

Parameters
xsConstructor arguments for C.
Examples:
dancing_kirby.cpp, and hello_world.cpp.

◆ spawn() [2/3]

template<spawn_options Os = no_spawn_options, class F , class... Ts>
infer_handle_from_fun_t<F> caf::actor_system::spawn ( fun,
Ts &&...  xs 
)

Returns a new functor-based actor.

The first argument must be the functor, the remainder of xs... is used to invoke the functor. The behavior of spawn can be modified by setting Os, e.g., to opt-out of the cooperative scheduling.

◆ spawn() [3/3]

template<class Handle , class E = typename std::enable_if<is_handle<Handle>::value>::type>
expected<Handle> caf::actor_system::spawn ( const std::string &  name,
message  args,
execution_unit ctx = nullptr,
bool  check_interface = true,
const mpi expected_ifs = nullptr 
)

Returns a new actor with run-time type name, constructed with the arguments stored in args.

Attention
This feature is experimental.

◆ spawn_class()

template<class C , spawn_options Os, class... Ts>
infer_handle_from_class_t<C> caf::actor_system::spawn_class ( actor_config cfg,
Ts &&...  xs 
)

Called by spawn when used to create a class-based actor to apply automatic conversions to xs before spawning the actor.

Should not be called by users of the library directly.

Parameters
cfgTo-be-filled config for the actor.
xsConstructor arguments for C.

The documentation for this class was generated from the following file: