Skip to content

sgns::subscription::SubscriptionEngine

More...

#include <subscription_engine.hpp>

Inherits from std::enable_shared_from_this< SubscriptionEngine< Key, Type, Arguments... > >

Public Types

Name
using Key KeyType
using Type ValueType
using Subscriber< KeyType, ValueType, Arguments... > SubscriberType
using std::shared_ptr< SubscriberType > SubscriberPtr
using std::weak_ptr< SubscriberType > SubscriberWPtr
using std::list< SubscriberWPtr > SubscribersContainer
using typename SubscribersContainer::iterator IteratorType

Public Functions

Name
SubscriptionEngine() =default
~SubscriptionEngine() =default
SubscriptionEngine(SubscriptionEngine && ) =default
SubscriptionEngine & operator=(SubscriptionEngine && ) =default
SubscriptionEngine(const SubscriptionEngine & ) =delete
SubscriptionEngine & operator=(const SubscriptionEngine & ) =delete
size_t size(const KeyType & key) const
void notify(const KeyType & key, const Arguments &... args)

Friends

Name
class Subscriber

Detailed Description

template <typename Key ,
typename Type ,
typename... Arguments>
class sgns::subscription::SubscriptionEngine;

Public Types Documentation

using KeyType

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::KeyType = Key;

using ValueType

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::ValueType = Type;

using SubscriberType

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::SubscriberType = Subscriber<KeyType, ValueType, Arguments...>;

using SubscriberPtr

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::SubscriberPtr = std::shared_ptr<SubscriberType>;

using SubscriberWPtr

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::SubscriberWPtr = std::weak_ptr<SubscriberType>;

using SubscribersContainer

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::SubscribersContainer = std::list<SubscriberWPtr>;

List is preferable here because this container iterators remain alive after removal from the middle of the container TODO(iceseer): PRE-476 remove processor cache penalty, while iterating, using custom allocator

using IteratorType

using sgns::subscription::SubscriptionEngine< Key, Type, Arguments >::IteratorType = typename SubscribersContainer::iterator;

Public Functions Documentation

function SubscriptionEngine

SubscriptionEngine() =default

function ~SubscriptionEngine

~SubscriptionEngine() =default

function SubscriptionEngine

SubscriptionEngine(
    SubscriptionEngine && 
) =default

function operator=

SubscriptionEngine & operator=(
    SubscriptionEngine && 
) =default

function SubscriptionEngine

SubscriptionEngine(
    const SubscriptionEngine & 
) =delete

function operator=

SubscriptionEngine & operator=(
    const SubscriptionEngine & 
) =delete

function size

inline size_t size(
    const KeyType & key
) const

function notify

inline void notify(
    const KeyType & key,
    const Arguments &... args
)

Friends

friend Subscriber

friend class Subscriber(
    Subscriber 
);

Updated on 2026-03-04 at 13:10:44 -0800