DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
CallbackAdapter.hpp
Go to the documentation of this file.
1
10#ifndef IPM_SRC_CALLBACKADAPTER_HPP_
11#define IPM_SRC_CALLBACKADAPTER_HPP_
12
13#include "ipm/Receiver.hpp"
14
15#include <atomic>
16#include <functional>
17#include <memory>
18#include <mutex>
19#include <thread>
20
21namespace dunedaq {
22namespace ipm {
23
25{
26public:
27 CallbackAdapter() = default; // Explicitly defaulted
28
29 virtual ~CallbackAdapter() noexcept;
30
31 void set_receiver(Receiver* receiver_ptr);
32 void set_callback(std::function<void(Receiver::Response&)> callback);
33 void clear_callback();
34
35private:
36 void startup();
37 void shutdown();
38 void thread_loop();
39
41 std::function<void(Receiver::Response&)> m_callback{ nullptr };
42 mutable std::mutex m_callback_mutex;
43 std::unique_ptr<std::thread> m_thread{ nullptr };
44 std::atomic<bool> m_is_listening{ false };
45};
46} // namespace ipm
47} // namespace dunedaq
48
49#endif // IPM_SRC_CALLBACKADAPTER_HPP_
std::function< void(Receiver::Response &)> m_callback
void set_callback(std::function< void(Receiver::Response &)> callback)
virtual ~CallbackAdapter() noexcept
std::unique_ptr< std::thread > m_thread
std::atomic< bool > m_is_listening
void set_receiver(Receiver *receiver_ptr)
Including Qt Headers.