Stride Reference Manual  1.0
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

virtual ~Subject ()
 
template<typename U >
void registerObserver (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 35 of file Subject.h.

Member Typedef Documentation

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

Definition at line 37 of file Subject.h.

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

Definition at line 38 of file Subject.h.

Constructor & Destructor Documentation

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

Definition at line 41 of file Subject.h.

Member Function Documentation

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

Definition at line 44 of file Subject.h.

Referenced by stride::run::Runner::initOutputs().

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

Definition at line 49 of file Subject.h.

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

Definition at line 53 of file Subject.h.

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

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

Definition at line 57 of file Subject.h.

Member Data Documentation

template<typename E>
std::map<std::weak_ptr<const void>, CallbackType, std::owner_less<std::weak_ptr<const void> > > stride::util::Subject< E >::m_observers
private

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