rotor
Event loop friendly C++ actor micro-framework
Loading...
Searching...
No Matches
rotor::plugin::link_client_plugin_t Struct Reference

allows actor to have active (client) role in linking More...

#include <link_client.h>

Inheritance diagram for rotor::plugin::link_client_plugin_t:
rotor::plugin::plugin_base_t

Public Types

using link_callback_t = std::function<void(const extended_error_ptr_t &)>
 callback action upon link
using unlink_reaction_t = std::function<bool(message::unlink_request_t &message)>
 unlink interceptor callback
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 link (const address_ptr_t &address, bool operational_only=true, const link_callback_t &callback={}) noexcept
 attempt to link with the address
template<typename F>
void on_unlink (F &&callback) noexcept
 sets actor's callback on unlink request
virtual void on_link_response (message::link_response_t &message) noexcept
 handler for link response
virtual void on_unlink_request (message::unlink_request_t &message) noexcept
 handler for unlink request
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
void forget_link (message::unlink_request_t &message) noexcept
 continues previously suspended unlink request
 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_tactor
 non-owning actor pointer

Detailed Description

allows actor to have active (client) role in linking

The plugin keeps records of all "servers" where it is connected to. When actor is going to shutdown it will notify peers about unlinking.

It is allowed to have a custom actors' callback on every link result. connected clients will send unlink confirmation (or until timeout will trigger).

Member Typedef Documentation

◆ unlink_reaction_t

unlink interceptor callback

if it returns true, the unlink is not performed. It is assumed, that forget_link will be called later

Member Function Documentation

◆ activate()

void rotor::plugin::link_client_plugin_t::activate ( actor_base_t * actor)
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.

◆ handle_init()

bool rotor::plugin::link_client_plugin_t::handle_init ( message::init_request_t * message)
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.

◆ handle_shutdown()

bool rotor::plugin::link_client_plugin_t::handle_shutdown ( message::shutdown_request_t * message)
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.

◆ identity()

const std::type_index & rotor::plugin::link_client_plugin_t::identity ( ) const
overridevirtualnoexcept

returns pointer, which uniquely identifiess plugin type

Implements rotor::plugin::plugin_base_t.

◆ link()

virtual void rotor::plugin::link_client_plugin_t::link ( const address_ptr_t & address,
bool operational_only = true,
const link_callback_t & callback = {} )
virtualnoexcept

attempt to link with the address

If operational_only is set, then the server side will respond only upon becoming operational.

The link callback is always invoked upon response (successful or nor) receiving.

Member Data Documentation

◆ class_identity

const std::type_index rotor::plugin::link_client_plugin_t::class_identity
static

The plugin unique identity to allow further static_cast'ing


The documentation for this struct was generated from the following file:
  • /home/b/development/cpp/cpp-rotor/include/rotor/plugin/link_client.h