9#include "plugin_base.h"
11#include <unordered_set>
17#pragma warning(disable : 4251)
20namespace rotor::plugin {
38 const std::type_index &
identity() const noexcept override;
55 virtual
bool has_clients() noexcept {
return !linked_clients.empty(); }
61 template <typename T> auto &
access() noexcept;
64 enum class link_state_t { PENDING, OPERATIONAL, UNLINKING };
66 using request_option_t = std::optional<request_id_t>;
68 link_info_t(link_state_t state_, link_request_ptr_t request_) noexcept : state{state_}, request{request_} {}
70 link_request_ptr_t request;
71 request_option_t unlink_request;
72 bool shutdown_notified =
false;
75 using linked_clients_t = std::unordered_map<address_ptr_t, link_info_t>;
76 linked_clients_t linked_clients;
namespace for rotor core messages (which just transform payloads)
Definition messages.hpp:317
boost::intrusive_ptr< T > intrusive_ptr_t
alias for intrusive pointer
Definition arc.hpp:27
universal primitive of concurrent computation
Definition actor_base.h:47
allows actor to have passive (server) role in linking
Definition link_server.h:32
virtual void on_unlink_notify(message::unlink_notify_t &message) noexcept
reaction upon link unlink notify
const std::type_index & identity() const noexcept override
returns pointer, which uniquely identifiess plugin type
void handle_start(message::start_trigger_t *message) noexcept override
polls plugin, whether it is done with start
plugin_base_t()=default
default plugin ctor
static const std::type_index class_identity
Definition link_server.h:36
virtual bool has_clients() noexcept
returns true if there is any connected client
Definition link_server.h:55
auto & access() noexcept
generic non-public fields accessor
bool handle_shutdown(message::shutdown_request_t *message) noexcept override
polls plugin, whether it is done with shutdown
virtual void on_link_request(message::link_request_t &message) noexcept
reaction upon link request
virtual void notify_shutdown() noexcept
let clients know that the actor is going to shut self down
virtual void on_unlink_response(message::unlink_response_t &message) noexcept
reaction upon link unlink response
void activate(actor_base_t *actor) noexcept override
invoked by actor upon initialization.
plugin_base_t()=default
default plugin ctor
actor_base_t * actor
non-owning actor pointer
Definition plugin_base.h:179