SObjectizer  5.5
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
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::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 (agent_t *owner)
 
virtual ~subscription_storage_t () SO_5_NOEXCEPT=default
 
virtual void create_event_subscription (const mbox_t &mbox, const std::type_index &msg_type, const message_limit::control_block_t *limit, const state_t &target_state, const event_handler_method_t &method, thread_safety_t thread_safety)=0
 
virtual void drop_subscription (const mbox_t &mbox, const std::type_index &msg_type, const state_t &target_state)=0
 
virtual void drop_subscription_for_all_states (const mbox_t &mbox, const std::type_index &msg_type)=0
 
virtual const event_handler_data_tfind_handler (mbox_id_t mbox_id, const std::type_index &msg_type, const state_t &current_state) const SO_5_NOEXCEPT=0
 
virtual void debug_dump (std::ostream &to) const =0
 
virtual void drop_content ()=0
 Drop all content. More...
 
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. More...
 
virtual std::size_t query_subscriptions_count () const =0
 Count of subscriptions in the storage. More...
 

Protected Member Functions

agent_towner () const
 

Private Attributes

agent_tm_owner
 

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.

Constructor & Destructor Documentation

◆ subscription_storage_t()

so_5::impl::subscription_storage_t::subscription_storage_t ( agent_t owner)

◆ ~subscription_storage_t()

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

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,
const message_limit::control_block_t limit,
const state_t target_state,
const event_handler_method_t method,
thread_safety_t  thread_safety 
)
pure virtual

◆ debug_dump()

virtual void so_5::impl::subscription_storage_t::debug_dump ( std::ostream &  to) const
pure virtual

◆ drop_content()

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

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::hash_table_subscr_storage::storage_t, so_5::impl::vector_based_subscr_storage::storage_t, so_5::impl::adaptive_subscr_storage::storage_t, and so_5::impl::map_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 virtual

◆ 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 virtual

◆ 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 virtual

◆ owner()

agent_t * so_5::impl::subscription_storage_t::owner ( ) const
protected

◆ query_content()

virtual subscription_storage_common::subscr_info_vector_t so_5::impl::subscription_storage_t::query_content ( ) const
pure virtual

◆ query_subscriptions_count()

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

◆ setup_content()

virtual void so_5::impl::subscription_storage_t::setup_content ( subscription_storage_common::subscr_info_vector_t &&  info)
pure virtual

Member Data Documentation

◆ m_owner

agent_t* so_5::impl::subscription_storage_t::m_owner
private

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