8#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_DATAMOVECALLBACKREGISTRY_HPP_
9#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_DATAMOVECALLBACKREGISTRY_HPP_
19namespace datahandlinglibs {
28 std::string
id()
const {
return m_id; }
33template<
typename DataType>
40 m_callback = std::make_shared<std::function<void(DataType&&)>>(callback);
42 std::shared_ptr<std::function<void(DataType&&)>>
m_callback;
48 static std::shared_ptr<DataMoveCallbackRegistry>
get()
61 template<
typename DataType>
62 void register_callback(
const std::string&
id, std::function<
void(DataType&&)> callback);
72 template<
typename DataType>
73 std::shared_ptr<std::function<void(DataType&&)>>
80 static std::shared_ptr<DataMoveCallbackRegistry>
s_instance;
virtual ~CallbackConcept()=default
CallbackConcept(std::string id)
DataMoveCallbackRegistry()
static std::shared_ptr< DataMoveCallbackRegistry > s_instance
DataMoveCallbackRegistry(DataMoveCallbackRegistry &&)=delete
DataMoveCallbackRegistry is not move-constructible.
DataMoveCallbackRegistry & operator=(DataMoveCallbackRegistry &&)=delete
DataMoveCallbackRegistry is not move-assignable.
DataMoveCallbackRegistry(const DataMoveCallbackRegistry &)=delete
DataMoveCallbackRegistry is not copy-constructible.
static std::shared_ptr< DataMoveCallbackRegistry > get()
DataMoveCallbackRegistry & operator=(const DataMoveCallbackRegistry &)=delete
DataMoveCallbackRegistry is not copy-assignable.
void register_callback(const std::string &id, std::function< void(DataType &&)> callback)
std::shared_ptr< std::function< void(DataType &&)> > get_callback(const std::string &id)
Gets the callback function registered with the given ID.
std::map< std::string, std::shared_ptr< CallbackConcept > > m_callback_map
std::shared_ptr< std::function< void(DataType &&)> > m_callback
DataMoveCallback(std::string id, std::function< void(DataType &&)> callback)