2
3
6
7
8
9
10
11
13#include <so_5/impl/subscription_storage_iface.hpp>
25
26
27
28
29
34
35
36
37
38
39
40
41
42
43
44
45
50 std::size_t threshold,
51 subscription_storage_unique_ptr_t small_storage,
52 subscription_storage_unique_ptr_t large_storage );
56 const mbox_t & mbox_ref,
57 const std::type_index & type_index,
59 const state_t & target_state,
60 const event_handler_method_t & method,
67 const std::type_index & msg_type,
68 const state_t & target_state )
noexcept override;
73 const std::type_index & msg_type )
noexcept override;
81 const std::type_index & msg_type,
82 const state_t & current_state )
const noexcept override;
85 debug_dump( std::ostream & to )
const override;
113 std::size_t threshold,
114 subscription_storage_unique_ptr_t small_storage,
115 subscription_storage_unique_ptr_t large_storage )
126 const std::type_index & msg_type,
128 const state_t & target_state,
129 const event_handler_method_t & method,
161 const std::type_index & msg_type,
162 const state_t & target_state )
noexcept
172 const std::type_index & msg_type )
noexcept
189 const std::type_index & msg_type,
190 const state_t & current_state )
const noexcept
264 std::size_t threshold )
266 return [threshold]() {
267 return impl::subscription_storage_unique_ptr_t(
277 std::size_t threshold,
278 const subscription_storage_factory_t & small_storage_factory,
279 const subscription_storage_factory_t & large_storage_factory )
282 return impl::subscription_storage_unique_ptr_t(
285 small_storage_factory()
,
286 large_storage_factory()
) );
Interface for message sink.
An adaptive storage for agent's subscriptions information.
virtual void drop_subscription(const mbox_t &mbox, const std::type_index &msg_type, const state_t &target_state) noexcept override
subscription_storage_t * m_current_storage
void setup_content(subscription_storage_common::subscr_info_vector_t &&info) override
Setup content from information from another storage object.
const event_handler_data_t * find_handler(mbox_id_t mbox_id, const std::type_index &msg_type, const state_t ¤t_state) const noexcept override
void drop_all_subscriptions() noexcept override
Drop all subscriptions.
const std::size_t m_threshold
void drop_content() noexcept override
Drop all content.
std::size_t query_subscriptions_count() const override
Count of subscriptions in the storage.
storage_t(std::size_t threshold, subscription_storage_unique_ptr_t small_storage, subscription_storage_unique_ptr_t large_storage)
virtual void create_event_subscription(const mbox_t &mbox_ref, const std::type_index &type_index, abstract_message_sink_t &message_sink, const state_t &target_state, const event_handler_method_t &method, thread_safety_t thread_safety, event_handler_kind_t handler_kind) override
subscription_storage_unique_ptr_t m_small_storage
void drop_subscription_for_all_states(const mbox_t &mbox, const std::type_index &msg_type) noexcept override
subscription_storage_unique_ptr_t m_large_storage
void try_switch_to_smaller_storage() noexcept
void debug_dump(std::ostream &to) const override
subscription_storage_common::subscr_info_vector_t query_content() const override
An interface of subscription storage.
virtual void setup_content(subscription_storage_common::subscr_info_vector_t &&info)=0
Setup content from information from another storage object.
virtual void debug_dump(std::ostream &to) const =0
virtual const event_handler_data_t * find_handler(mbox_id_t mbox_id, const std::type_index &msg_type, const state_t ¤t_state) const noexcept=0
virtual std::size_t query_subscriptions_count() const =0
Count of subscriptions in the storage.
virtual void drop_subscription(const mbox_t &mbox, const std::type_index &msg_type, const state_t &target_state) noexcept=0
virtual subscription_storage_common::subscr_info_vector_t query_content() const =0
virtual void drop_subscription_for_all_states(const mbox_t &mbox, const std::type_index &msg_type) noexcept=0
virtual void drop_content() noexcept=0
Drop all content.
virtual void create_event_subscription(const mbox_t &mbox, const std::type_index &msg_type, abstract_message_sink_t &message_sink, const state_t &target_state, const event_handler_method_t &method, thread_safety_t thread_safety, event_handler_kind_t handler_kind)=0
virtual void drop_all_subscriptions() noexcept=0
Drop all subscriptions.
An adaptive storage for agent's subscriptions information.
Common stuff for various subscription storage implementations.
Details of SObjectizer run-time implementations.
Private part of message limit implementation.
SO_5_FUNC subscription_storage_factory_t default_subscription_storage_factory()
Factory for default subscription storage object.
thread_safety_t
Thread safety indicator.
SO_5_FUNC subscription_storage_factory_t adaptive_subscription_storage_factory(std::size_t threshold, const subscription_storage_factory_t &small_storage_factory, const subscription_storage_factory_t &large_storage_factory)
Factory for adaptive subscription storage.
SO_5_FUNC subscription_storage_factory_t vector_based_subscription_storage_factory(std::size_t initial_capacity)
Factory for subscription storage based on unsorted std::vector.
SO_5_FUNC subscription_storage_factory_t map_based_subscription_storage_factory()
Factory for subscription storage based on std::map.
SO_5_FUNC subscription_storage_factory_t adaptive_subscription_storage_factory(std::size_t threshold)
Factory for adaptive subscription storage.
event_handler_kind_t
Kind of an event handler.
Information about event_handler and its properties.