handy access to registry_t
, for name registration and discovery
More...
#include <registry.h>
Classes | |
struct | discovery_task_t |
helper class to invoke callback upon address discovery More... | |
Public Types | |
enum class | phase_t { discovering , linking } |
phase for each discovery task: discovering or linking | |
using | discovery_map_t = std::unordered_map< std::string, discovery_task_t > |
service name to task mapping | |
Public Types inherited from rotor::plugin::plugin_base_t | |
enum | reaction_t : unsigned { INIT = 0b00000001 , SHUTDOWN = 0b00000010 , SUBSCRIPTION = 0b00000100 , START = 0b00001000 } |
possible plugin's reactions on actor lifetime events | |
using | reaction_underlying_t = std::underlying_type_t< reaction_t > |
the underlying type of reaction_t | |
Public Member Functions | |
const std::type_index & | identity () const noexcept override |
returns pointer, which uniquely identifiess plugin type | |
void | activate (actor_base_t *actor) noexcept override |
invoked by actor upon initialization. | |
virtual void | on_registration (message::registration_response_t &) noexcept |
reaction on registration response | |
virtual void | on_discovery (message::discovery_response_t &) noexcept |
reaction on discovery response | |
virtual void | on_future (message::discovery_future_t &message) noexcept |
reaction on discovery future | |
virtual void | register_name (const std::string &name, const address_ptr_t &address) noexcept |
enqueues name/address registration | |
virtual discovery_task_t & | discover_name (const std::string &name, address_ptr_t &address, bool delayed=false) noexcept |
creates name discovery task | |
bool | handle_shutdown (message::shutdown_request_t *message) noexcept override |
polls plugin, whether it is done with shutdown | |
bool | handle_init (message::init_request_t *message) noexcept override |
polls plugin, whether it is done with initialization | |
template<typename T > | |
auto & | access () noexcept |
generic non-public fields accessor | |
plugin_base_t ()=default | |
default plugin ctor | |
plugin_base_t (const plugin_base_t &)=delete | |
copy ctor is not allowed | |
Public Member Functions inherited from rotor::plugin::plugin_base_t | |
plugin_base_t ()=default | |
default plugin ctor | |
plugin_base_t (const plugin_base_t &)=delete | |
copy ctor is not allowed | |
virtual void | deactivate () noexcept |
deactivates plugin from an actor | |
virtual void | handle_start (message::start_trigger_t *message) noexcept |
polls plugin, whether it is done with start | |
virtual bool | handle_subscription (message::subscription_t &message) noexcept |
polls plugin, whether it is done with subscription | |
virtual bool | handle_unsubscription (const subscription_point_t &point, bool external) noexcept |
polls plugin, whether it is done with unsubscription | |
virtual bool | forget_subscription (const subscription_point_t &point) noexcept |
remove subscription point from internal storage | |
virtual void | forget_subscription (const subscription_info_ptr_t &info) noexcept |
commits unsubscription via supervisor | |
template<typename Plugin , typename Fn > | |
void | with_casted (Fn &&fn, config_phase_t desired_phase=config_phase_t::INITIALIZING) noexcept |
invokes the callback if plugin type and phase mach | |
reaction_underlying_t | get_reaction () const noexcept |
returns the current set of plugin reactions | |
void | reaction_on (reaction_t value) noexcept |
turns on the specified reaction of the plugin | |
void | reaction_off (reaction_t value) noexcept |
turns off the specified reaction of the plugin | |
template<typename T > | |
auto & | access () noexcept |
generic non-public fields accessor | |
Static Public Attributes | |
static const std::type_index | class_identity |
Static Public Attributes inherited from rotor::plugin::plugin_base_t | |
static constexpr reaction_underlying_t | REACTION_MASK = 0b00001111 |
the bit mask for all reactions enabled | |
Additional Inherited Members | |
Protected Member Functions inherited from rotor::plugin::plugin_base_t | |
template<typename Handler > | |
subscription_info_ptr_t | subscribe (Handler &&handler, const address_ptr_t &address) noexcept |
subscribes plugin to the custom plugin handler on the specified address | |
template<typename Handler > | |
subscription_info_ptr_t | subscribe (Handler &&handler) noexcept |
subscribes plugin to the custom plugin handler on the main actor address | |
extended_error_ptr_t | make_error (const std::error_code &ec, const extended_error_ptr_t &next={}, const message_ptr_t &request={}) noexcept |
makes an error within the context of actor | |
Protected Attributes inherited from rotor::plugin::plugin_base_t | |
actor_base_t * | actor |
non-owning actor pointer | |
handy access to registry_t
, for name registration and discovery
Can use registry_t
to register name/address during actor init phase and perform the reverse operation to deregister name/address during shutdown phase.
Similary the registry_t
can be used to discover name in the registry and link the current actor to the target address during init phase; there is no reverse operation during shutdown phase, because unlinking will be handled by plugin::link_client_plugin_t
plugin.
|
overridevirtualnoexcept |
invoked by actor upon initialization.
It it responsible for setting up reactions and further installation, e.g. messages subscriptions and may calling back actor's configuration (which can be postponed).
Before the activate is invoked, the plugin is in PREINIT
phase, after the activate is called, the plugin is in INITIALIZING
phase. This might be useful for early/late (double) plugin configuration in actor.
Reimplemented from rotor::plugin::plugin_base_t.
|
virtualnoexcept |
creates name discovery task
The address pointer is the place, where the discovered address should be stored.
The delayed
means: if the name is missing in the registry, do not response with error (which will cause shutdown of client), but wait until the name be registered, and only then reply with found address. In other words: instead of sending discovery request, it will send discovery future.
|
overridevirtualnoexcept |
polls plugin, whether it is done with initialization
The method is invoked only when init
reaction was set on.
The true
is returned, that means plugin is done with init and will not be longer polled in future.
Reimplemented from rotor::plugin::plugin_base_t.
|
overridevirtualnoexcept |
polls plugin, whether it is done with shutdown
The method is invoked only when shutdown
reaction was set on.
The true
is returned, that means plugin is done with shutdown and will not be longer polled in future.
Reimplemented from rotor::plugin::plugin_base_t.
|
overridevirtualnoexcept |
returns pointer, which uniquely identifiess plugin type
Implements rotor::plugin::plugin_base_t.
|
virtualnoexcept |
enqueues name/address registration
It links with registry actor first upon demand, and then sends to it name registration request(s).
|
static |
The plugin unique identity to allow further static_cast'ing