Stride Reference Manual  - generated for commit 9643b11
stride::util::Subject< E > Class Template Reference

Template for Subject/Observer (or Publish/Subscribe). More...

#include <Subject.h>

Inheritance diagram for stride::util::Subject< E >:
Inheritance graph
Collaboration diagram for stride::util::Subject< E >:
Collaboration graph

Public Types

using EventType = E
 
using CallbackType = std::function< void(const EventType &)>
 

Public Member Functions

 Subject ()
 
virtual ~Subject ()
 
template<typename U >
void Register (const std::shared_ptr< U > &u, CallbackType f)
 
template<typename U >
void Unregister (const std::shared_ptr< U > &u)
 
void UnregisterAll ()
 
void Notify (const EventType &e)
 

Private Attributes

std::map< std::weak_ptr< const void >, CallbackType, std::owner_less< std::weak_ptr< const void > > > m_observers
 

Detailed Description

template<typename E>
class stride::util::Subject< E >

Template for Subject/Observer (or Publish/Subscribe).

Offers flexibility in defining event types and having customized callbacks. Despite the shared_ptrs in the Register/Unregister, the Subject takes no ownership of the observer object and only stores a weak_ptr.

Definition at line 37 of file util/Subject.h.

Member Typedef Documentation

template<typename E>
using stride::util::Subject< E >::EventType = E

Definition at line 40 of file util/Subject.h.

template<typename E>
using stride::util::Subject< E >::CallbackType = std::function<void(const EventType&)>

Definition at line 41 of file util/Subject.h.

Constructor & Destructor Documentation

template<typename E>
stride::util::Subject< E >::Subject ( )
inline

Definition at line 44 of file util/Subject.h.

template<typename E>
virtual stride::util::Subject< E >::~Subject ( )
inlinevirtual

Definition at line 46 of file util/Subject.h.

Member Function Documentation

template<typename E>
template<typename U >
void stride::util::Subject< E >::Register ( const std::shared_ptr< U > &  u,
CallbackType  f 
)
inline

Definition at line 49 of file util/Subject.h.

template<typename E>
template<typename U >
void stride::util::Subject< E >::Unregister ( const std::shared_ptr< U > &  u)
inline

Definition at line 55 of file util/Subject.h.

template<typename E>
void stride::util::Subject< E >::UnregisterAll ( )
inline

Definition at line 60 of file util/Subject.h.

Referenced by stride::util::Subject< stride::sim_event::Id >::~Subject().

Here is the caller graph for this function:

template<typename E>
void stride::util::Subject< E >::Notify ( const EventType e)
inline

Definition at line 62 of file util/Subject.h.

Member Data Documentation


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