SObjectizer 5.8
Loading...
Searching...
No Matches
so_5::impl::subscription_storage_t Class Referenceabstract

An interface of subscription storage. More...

#include <subscription_storage_iface.hpp>

Inheritance diagram for so_5::impl::subscription_storage_t:
so_5::impl::adaptive_subscr_storage::storage_t so_5::impl::flat_set_based_subscr_storage::storage_t so_5::impl::hash_table_subscr_storage::storage_t so_5::impl::map_based_subscr_storage::storage_t so_5::impl::vector_based_subscr_storage::storage_t

Public Member Functions

 subscription_storage_t ()
 
virtual ~subscription_storage_t () noexcept=default
 
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_subscription (const mbox_t &mbox, const std::type_index &msg_type, const state_t &target_state) noexcept=0
 
virtual void drop_subscription_for_all_states (const mbox_t &mbox, const std::type_index &msg_type) noexcept=0
 
virtual void drop_all_subscriptions () noexcept=0
 Drop all subscriptions.
 
virtual const event_handler_data_tfind_handler (mbox_id_t mbox_id, const std::type_index &msg_type, const state_t &current_state) const noexcept=0
 
virtual void debug_dump (std::ostream &to) const =0
 
virtual void drop_content () noexcept=0
 Drop all content.
 
virtual subscription_storage_common::subscr_info_vector_t query_content () const =0
 
virtual void setup_content (subscription_storage_common::subscr_info_vector_t &&info)=0
 Setup content from information from another storage object.
 
virtual std::size_t query_subscriptions_count () const =0
 Count of subscriptions in the storage.
 

Detailed Description

An interface of subscription storage.

Since
v.5.5.3

Prior to v.5.5.3 there where only one subscription_storage implementation. But this implementation was not efficient for all cases.

Sometimes an agent has very few subscriptions and efficient implementation for that case can be based on std::vector. Sometimes an agent has very many subscriptions and efficient implementation can require std::map or std::unordered_map.

The purpose of this interface is hiding details of concrete subscription_storage implementation.

Definition at line 158 of file subscription_storage_iface.hpp.

Constructor & Destructor Documentation

◆ subscription_storage_t()

so_5::impl::subscription_storage_t::subscription_storage_t ( )

Definition at line 21 of file subscription_storage_iface.cpp.

◆ ~subscription_storage_t()

virtual so_5::impl::subscription_storage_t::~subscription_storage_t ( )
virtualdefaultnoexcept

Member Function Documentation

◆ create_event_subscription()

virtual void so_5::impl::subscription_storage_t::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 )
pure virtual

◆ debug_dump()

◆ drop_all_subscriptions()

virtual void so_5::impl::subscription_storage_t::drop_all_subscriptions ( )
pure virtualnoexcept

Drop all subscriptions.

All subscribed event-handlers have to be unsubscribed. The object should remain in the valid state and creation of new subscriptions have to be allowed.

This method is intended to be used when an agents what to erase all subscriptions at once.

Since
v.5.7.3

Implemented in so_5::impl::adaptive_subscr_storage::storage_t, so_5::impl::flat_set_based_subscr_storage::storage_t, so_5::impl::hash_table_subscr_storage::storage_t, so_5::impl::map_based_subscr_storage::storage_t, and so_5::impl::vector_based_subscr_storage::storage_t.

◆ drop_content()

virtual void so_5::impl::subscription_storage_t::drop_content ( )
pure virtualnoexcept

Drop all content.

All information about subscription must be erased, but without real unsubscription.

This method will be called after successful copy of subscription information to another storage.

Implemented in so_5::impl::adaptive_subscr_storage::storage_t, so_5::impl::flat_set_based_subscr_storage::storage_t, so_5::impl::hash_table_subscr_storage::storage_t, so_5::impl::map_based_subscr_storage::storage_t, and so_5::impl::vector_based_subscr_storage::storage_t.

◆ drop_subscription()

virtual void so_5::impl::subscription_storage_t::drop_subscription ( const mbox_t & mbox,
const std::type_index & msg_type,
const state_t & target_state )
pure virtualnoexcept

◆ drop_subscription_for_all_states()

virtual void so_5::impl::subscription_storage_t::drop_subscription_for_all_states ( const mbox_t & mbox,
const std::type_index & msg_type )
pure virtualnoexcept

◆ find_handler()

virtual const event_handler_data_t * so_5::impl::subscription_storage_t::find_handler ( mbox_id_t mbox_id,
const std::type_index & msg_type,
const state_t & current_state ) const
pure virtualnoexcept

◆ query_content()

◆ query_subscriptions_count()

virtual std::size_t so_5::impl::subscription_storage_t::query_subscriptions_count ( ) const
pure virtual

◆ setup_content()


The documentation for this class was generated from the following files: