DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
datahandlinglibs
include
datahandlinglibs
DataMoveCallbackRegistry.hpp
Go to the documentation of this file.
1
8
#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_DATAMOVECALLBACKREGISTRY_HPP_
9
#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_DATAMOVECALLBACKREGISTRY_HPP_
10
11
#include "
logging/Logging.hpp
"
12
13
#include "
appmodel/DataMoveCallbackConf.hpp
"
14
15
#include <functional>
16
#include <memory>
17
#include <string>
18
#include <map>
19
20
namespace
dunedaq
{
21
namespace
datahandlinglibs
{
22
23
class
CallbackConcept
{
24
public
:
25
explicit
CallbackConcept
(std::string
id
)
26
:
m_id
(
id
)
27
{
28
}
29
virtual
~CallbackConcept
() =
default
;
30
std::string
id
()
const
{
return
m_id
; }
31
protected
:
32
std::string
m_id
;
33
};
34
35
template
<
typename
DataType>
36
class
DataMoveCallback
:
public
CallbackConcept
37
{
38
public
:
39
DataMoveCallback
(std::string
id
, std::function<
void
(DataType&&)> callback)
40
:
CallbackConcept
(
id
)
41
{
42
m_callback
= std::make_shared<std::function<void(DataType&&)>>(callback);
43
}
44
std::shared_ptr<std::function<void(DataType&&)>>
m_callback
;
45
};
46
47
class
DataMoveCallbackRegistry
48
{
49
public
:
50
static
std::shared_ptr<DataMoveCallbackRegistry>
get
()
51
{
52
if
(!
s_instance
)
53
s_instance
= std::shared_ptr<DataMoveCallbackRegistry>(
new
DataMoveCallbackRegistry
());
54
55
return
s_instance
;
56
}
57
58
DataMoveCallbackRegistry
(
const
DataMoveCallbackRegistry
&) =
delete
;
59
DataMoveCallbackRegistry
&
operator=
(
const
DataMoveCallbackRegistry
&) =
delete
;
60
DataMoveCallbackRegistry
(
DataMoveCallbackRegistry
&&) =
delete
;
61
DataMoveCallbackRegistry
&
operator=
(
DataMoveCallbackRegistry
&&) =
delete
;
62
63
64
72
template
<
typename
DataType>
73
void
register_callback
(
const
appmodel::DataMoveCallbackConf
* conf, std::function<
void
(DataType&&)> callback);
74
83
template
<
typename
DataType>
84
std::shared_ptr<std::function<void(DataType&&)>>
get_callback
(
const
appmodel::DataMoveCallbackConf
* conf);
85
86
private
:
87
DataMoveCallbackRegistry
() {}
88
std::mutex
m_mutex
;
89
std::map<std::string, std::shared_ptr<CallbackConcept>>
m_callback_map
;
90
static
std::shared_ptr<DataMoveCallbackRegistry>
s_instance
;
91
};
92
93
}
// namespace datahandlinglibs
94
}
// namespace dunedaq
95
96
#include "
detail/DataMoveCallbackRegistry.hxx
"
97
98
#endif
// DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_DATAMOVECALLBACKREGISTRY_HPP_
DataMoveCallbackRegistry.hxx
dunedaq::appmodel::DataMoveCallbackConf
Definition
DataMoveCallbackConf.hpp:20
dunedaq::datahandlinglibs::CallbackConcept::~CallbackConcept
virtual ~CallbackConcept()=default
dunedaq::datahandlinglibs::CallbackConcept::id
std::string id() const
Definition
DataMoveCallbackRegistry.hpp:30
dunedaq::datahandlinglibs::CallbackConcept::m_id
std::string m_id
Definition
DataMoveCallbackRegistry.hpp:32
dunedaq::datahandlinglibs::CallbackConcept::CallbackConcept
CallbackConcept(std::string id)
Definition
DataMoveCallbackRegistry.hpp:25
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::DataMoveCallbackRegistry
DataMoveCallbackRegistry()
Definition
DataMoveCallbackRegistry.hpp:87
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::s_instance
static std::shared_ptr< DataMoveCallbackRegistry > s_instance
Definition
DataMoveCallbackRegistry.hpp:90
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::DataMoveCallbackRegistry
DataMoveCallbackRegistry(DataMoveCallbackRegistry &&)=delete
DataMoveCallbackRegistry is not move-constructible.
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::operator=
DataMoveCallbackRegistry & operator=(DataMoveCallbackRegistry &&)=delete
DataMoveCallbackRegistry is not move-assignable.
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::DataMoveCallbackRegistry
DataMoveCallbackRegistry(const DataMoveCallbackRegistry &)=delete
DataMoveCallbackRegistry is not copy-constructible.
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::get
static std::shared_ptr< DataMoveCallbackRegistry > get()
Definition
DataMoveCallbackRegistry.hpp:50
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::operator=
DataMoveCallbackRegistry & operator=(const DataMoveCallbackRegistry &)=delete
DataMoveCallbackRegistry is not copy-assignable.
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::m_callback_map
std::map< std::string, std::shared_ptr< CallbackConcept > > m_callback_map
Definition
DataMoveCallbackRegistry.hpp:89
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::get_callback
std::shared_ptr< std::function< void(DataType &&)> > get_callback(const appmodel::DataMoveCallbackConf *conf)
Gets the callback function registered with the given configuration.
Definition
DataMoveCallbackRegistry.hxx:25
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::m_mutex
std::mutex m_mutex
Definition
DataMoveCallbackRegistry.hpp:88
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::register_callback
void register_callback(const appmodel::DataMoveCallbackConf *conf, std::function< void(DataType &&)> callback)
Registers a callback function with a configuration object.
Definition
DataMoveCallbackRegistry.hxx:11
dunedaq::datahandlinglibs::DataMoveCallback::m_callback
std::shared_ptr< std::function< void(DataType &&)> > m_callback
Definition
DataMoveCallbackRegistry.hpp:44
dunedaq::datahandlinglibs::DataMoveCallback::DataMoveCallback
DataMoveCallback(std::string id, std::function< void(DataType &&)> callback)
Definition
DataMoveCallbackRegistry.hpp:39
DataMoveCallbackConf.hpp
Logging.hpp
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
Including Qt Headers.
Definition
module.cpp:16
Generated on
for DUNE-DAQ by
1.17.0