9#include "plugin_base.h"
14#pragma warning(disable : 4251)
17namespace rotor::plugin {
19using resource_id_t = std::size_t;
45 const std::type_index &
identity() const noexcept override;
56 virtual
void acquire(resource_id_t = 0) noexcept;
64 virtual
bool release(resource_id_t = 0) noexcept;
71 virtual std::uint32_t
has(resource_id_t = 0) noexcept;
77 template <typename T> auto &
access() noexcept;
80 using Resources = std::vector<std::uint32_t>;
82 bool configured = false;
namespace for rotor core messages (which just transform payloads)
Definition messages.hpp:317
universal primitive of concurrent computation
Definition actor_base.h:47
plugin_base_t()=default
default plugin ctor
actor_base_t * actor
non-owning actor pointer
Definition plugin_base.h:179
"lock" for external resources
Definition resources.h:39
virtual bool release(resource_id_t=0) noexcept
decrements the resource counter (aka unlocks)
static const std::type_index class_identity
Definition resources.h:43
bool handle_shutdown(message::shutdown_request_t *message) noexcept override
polls plugin, whether it is done with shutdown
const std::type_index & identity() const noexcept override
returns pointer, which uniquely identifiess plugin type
virtual void acquire(resource_id_t=0) noexcept
increments the resource counter (aka locks)
plugin_base_t()=default
default plugin ctor
bool handle_init(message::init_request_t *message) noexcept override
polls plugin, whether it is done with initialization
virtual bool has_any() noexcept
returns true if there is any resource is locked
virtual std::uint32_t has(resource_id_t=0) noexcept
returns counter value for resource_id
auto & access() noexcept
generic non-public fields accessor
void activate(actor_base_t *actor) noexcept override
invoked by actor upon initialization.