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 <map>
17
#include <memory>
18
#include <string>
19
20
namespace
dunedaq
{
21
namespace
datahandlinglibs
{
22
23
class
CallbackConcept
24
{
25
public
:
26
explicit
CallbackConcept
(std::string
id
)
27
:
m_id
(
id
)
28
{
29
}
30
virtual
~CallbackConcept
() =
default
;
31
std::string
id
()
const
{
return
m_id
; }
32
33
protected
:
34
std::string
m_id
;
35
};
36
37
template
<
typename
DataType>
38
class
DataMoveCallback
:
public
CallbackConcept
39
{
40
public
:
41
DataMoveCallback
(std::string
id
, std::function<
void
(DataType&&)> callback)
42
:
CallbackConcept
(
id
)
43
{
44
m_callback
= std::make_shared<std::function<void(DataType&&)>>(callback);
45
}
46
std::shared_ptr<std::function<void(DataType&&)>>
m_callback
;
47
};
48
49
class
DataMoveCallbackRegistry
50
{
51
public
:
52
static
std::shared_ptr<DataMoveCallbackRegistry>
get
()
53
{
54
if
(!
s_instance
)
55
s_instance
= std::shared_ptr<DataMoveCallbackRegistry>(
new
DataMoveCallbackRegistry
());
56
57
return
s_instance
;
58
}
59
60
DataMoveCallbackRegistry
(
const
DataMoveCallbackRegistry
&) =
61
delete
;
62
DataMoveCallbackRegistry
&
operator=
(
const
DataMoveCallbackRegistry
&) =
63
delete
;
64
DataMoveCallbackRegistry
(
DataMoveCallbackRegistry
&&) =
delete
;
65
DataMoveCallbackRegistry
&
operator=
(
DataMoveCallbackRegistry
&&) =
66
delete
;
67
75
template
<
typename
DataType>
76
void
register_callback
(
const
appmodel::DataMoveCallbackConf
* conf, std::function<
void
(DataType&&)> callback);
77
86
template
<
typename
DataType>
87
std::shared_ptr<std::function<void(DataType&&)>>
get_callback
(
const
appmodel::DataMoveCallbackConf
* conf);
88
89
private
:
90
DataMoveCallbackRegistry
() {}
91
std::mutex
m_mutex
;
92
std::map<std::string, std::shared_ptr<CallbackConcept>>
m_callback_map
;
93
static
std::shared_ptr<DataMoveCallbackRegistry>
s_instance
;
94
};
95
96
}
// namespace datahandlinglibs
97
}
// namespace dunedaq
98
99
#include "
detail/DataMoveCallbackRegistry.hxx
"
100
101
#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:31
dunedaq::datahandlinglibs::CallbackConcept::m_id
std::string m_id
Definition
DataMoveCallbackRegistry.hpp:34
dunedaq::datahandlinglibs::CallbackConcept::CallbackConcept
CallbackConcept(std::string id)
Definition
DataMoveCallbackRegistry.hpp:26
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::DataMoveCallbackRegistry
DataMoveCallbackRegistry()
Definition
DataMoveCallbackRegistry.hpp:90
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::s_instance
static std::shared_ptr< DataMoveCallbackRegistry > s_instance
Definition
DataMoveCallbackRegistry.hpp:93
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:52
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:92
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:26
dunedaq::datahandlinglibs::DataMoveCallbackRegistry::m_mutex
std::mutex m_mutex
Definition
DataMoveCallbackRegistry.hpp:91
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:46
dunedaq::datahandlinglibs::DataMoveCallback::DataMoveCallback
DataMoveCallback(std::string id, std::function< void(DataType &&)> callback)
Definition
DataMoveCallbackRegistry.hpp:41
DataMoveCallbackConf.hpp
Logging.hpp
dunedaq::datahandlinglibs
Definition
DataHandlingConcept.hpp:16
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
Generated on
for DUNE-DAQ by
1.18.0