DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::conffwk::ConfigurationSubscriptionCriteria Class Reference

Describes a subscription criteria. More...

#include <SubscriptionCriteria.hpp>

Public Types

typedef std::map< std::string, std::set< std::string > > ObjectMap
 The map stores full subsription information.
 

Public Member Functions

void add (const std::string &class_name)
 Add subscribtion on class changes.
 
void add (const std::string &class_name, const std::string &object_id)
 Add subscribtion on object changes by class name and object id.
 
void add (const DalObject &object)
 Add subscribtion on object changes by object's reference.
 
void remove (const std::string &class_name)
 Remove subscribtion on class changes.
 
void remove (const std::string &class_name, const std::string &object_id)
 Remove subscribtion on object changes by class name and object id.
 
void remove (const DalObject &object)
 Remove subscribtion on object changes by reference.
 
const std::set< std::string > & get_classes_subscription () const
 
const ObjectMapget_objects_subscription () const
 

Private Attributes

std::set< std::string > m_classes_subscription
 
ObjectMap m_objects_subscription
 

Detailed Description

Describes a subscription criteria.

The class provides interfaces to describe a subscription criteria on configuration modifications. A user creates an object of given class and describes criteria using add(const std::string&, const std::string&) and add(const std::string&) methods.

When the subscription criteria is ready, it is necessary to use Configuration::subscribe() method providing subscription criteria and callback. When database information is modified and it matches the criteria, the user's callback with such changes will be invoked.

Definition at line 35 of file SubscriptionCriteria.hpp.

Member Typedef Documentation

◆ ObjectMap

std::map< std::string , std::set<std::string> > dunedaq::conffwk::ConfigurationSubscriptionCriteria::ObjectMap

The map stores full subsription information.

Definition at line 119 of file SubscriptionCriteria.hpp.

Member Function Documentation

◆ add() [1/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::add ( const DalObject & object)

Add subscribtion on object changes by object's reference.

Subscribe on changes of object by object's reference. To be used for an object of class generated by genconffwk.

Parameters
objectreference to object

Definition at line 20 of file SubscriptionCriteria.cpp.

21{
22 add(object.class_name(), object.UID());
23}
void add(const std::string &class_name)
Add subscribtion on class changes.

◆ add() [2/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::add ( const std::string & class_name)

Add subscribtion on class changes.

The notification mechanism is started by the Configuration::subscribe() method. The user callback function passed to this method will be invoked in case of any modification of an object of this class or objects of derived classes.

Parameters
class_namename of the class

Definition at line 8 of file SubscriptionCriteria.cpp.

9{
10 m_classes_subscription.insert(class_name);
11}

◆ add() [3/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::add ( const std::string & class_name,
const std::string & object_id )

Add subscribtion on object changes by class name and object id.

Subscribe on changes of object by class name and object identity.

Parameters
class_namename of the class
object_idobject identity

Definition at line 14 of file SubscriptionCriteria.cpp.

15{
16 m_objects_subscription[class_name].insert(object_id);
17}

◆ get_classes_subscription()

const std::set< std::string > & dunedaq::conffwk::ConfigurationSubscriptionCriteria::get_classes_subscription ( ) const
inline

Return list of names of classes with subsriptions on any changes.

Definition at line 128 of file SubscriptionCriteria.hpp.

128{ return m_classes_subscription; }

◆ get_objects_subscription()

const ObjectMap & dunedaq::conffwk::ConfigurationSubscriptionCriteria::get_objects_subscription ( ) const
inline

Return list of objects subsribed on notification in case of changes.

Definition at line 135 of file SubscriptionCriteria.hpp.

135{ return m_objects_subscription; }

◆ remove() [1/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::remove ( const DalObject & object)

Remove subscribtion on object changes by reference.

Removes subscription on object changes previously made with add(const std::string&, const std::string&) or add(const DalObject&) methods. To be used for an object of class generated by genconffwk.

Parameters
objectreference to object

Definition at line 46 of file SubscriptionCriteria.cpp.

47{
48 remove(object.class_name(), object.UID());
49}
void remove(const std::string &class_name)
Remove subscribtion on class changes.

◆ remove() [2/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::remove ( const std::string & class_name)

Remove subscribtion on class changes.

Removes subscription on class changes previously made with add(const std::string&) method.

Parameters
class_namename of the class

Definition at line 26 of file SubscriptionCriteria.cpp.

27{
28 m_classes_subscription.erase(class_name);
29}

◆ remove() [3/3]

void dunedaq::conffwk::ConfigurationSubscriptionCriteria::remove ( const std::string & class_name,
const std::string & object_id )

Remove subscribtion on object changes by class name and object id.

Removes subscription on object changes previously made with add(const std::string&, const std::string&) or add(const DalObject&) methods.

Parameters
class_namename of the class
object_idobject identity

Definition at line 32 of file SubscriptionCriteria.cpp.

33{
34 ObjectMap::iterator i = m_objects_subscription.find(class_name);
35 if (i != m_objects_subscription.end())
36 {
37 i->second.erase(object_id);
38 if (i->second.empty())
39 {
41 }
42 }
43}

Member Data Documentation

◆ m_classes_subscription

std::set<std::string> dunedaq::conffwk::ConfigurationSubscriptionCriteria::m_classes_subscription
private

Definition at line 140 of file SubscriptionCriteria.hpp.

◆ m_objects_subscription

ObjectMap dunedaq::conffwk::ConfigurationSubscriptionCriteria::m_objects_subscription
private

Definition at line 141 of file SubscriptionCriteria.hpp.


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