8 #ifndef DAQ_DPMCLIENT_HPP
9 #define DAQ_DPMCLIENT_HPP
14 #include <boost/asio/io_context.hpp>
15 #include <boost/asio/steady_timer.hpp>
16 #include <boost/signals2/signal.hpp>
17 #include <boost/thread/future.hpp>
19 #include <log4cplus/logger.h>
25 class DpmDaqControlAsync;
31 namespace mal = ::elt::mal;
43 using StorageSignal = boost::signals2::signal<void(std::filesystem::space_info)>;
49 virtual auto ScheduleAsync(std::string
const& spec) -> boost::future<State> = 0;
54 virtual auto AbortAsync(std::string
const&
id) -> boost::future<State> = 0;
95 std::chrono::seconds
timeout = std::chrono::seconds(5);
114 virtual auto ScheduleAsync(std::string
const& spec) -> boost::future<State>
override;
119 virtual auto AbortAsync(std::string
const&
id) -> boost::future<State>
override;
147 -> boost::signals2::connection
override;
155 -> boost::signals2::connection
override;
158 void RequestStatus(std::string
const&
id);
159 void ScheduleRequestStatus(std::string
const&
id);
160 void UpdateStatus(
Status const& status);
164 boost::asio::io_context& m_io_ctx;
169 log4cplus::Logger m_logger;
174 std::shared_ptr<daqif::DpmDaqControlAsync> m_dpmif;
175 std::unique_ptr<Subscriptions> m_subs;
178 std::unordered_map<std::string, boost::asio::steady_timer> m_timers;
180 std::shared_ptr<bool> m_liveness = std::make_shared<bool>(
true);
virtual auto ScheduleAsync(std::string const &spec) -> boost::future< State > override
Schedule merging.
virtual void StopMonitorStatus(std::string const &id) override
Stop monitoring DAQ status.
DpmClientImpl(boost::asio::io_context &io_ctx, mal::Mal &mal, DpmClientParams params)
virtual auto ConnectStorageSignal(StorageSignal::slot_type const &slot) -> boost::signals2::connection override
Connect slot to storage change signal.
virtual auto ConnectStatusSignal(StatusSignal::slot_type const &slot) -> boost::signals2::connection override
Connect slot to status change signal.
virtual void StartMonitorStatus(std::string const &id) override
Start monitoring DAQ status.
virtual auto AbortAsync(std::string const &id) -> boost::future< State > override
Abort merging.
virtual auto ConnectStatusSignal(StatusSignal::slot_type const &slot) -> boost::signals2::connection=0
Connect slot to status change signal.
virtual void StopMonitorStatus(std::string const &id)=0
Stop monitoring DAQ status.
boost::signals2::signal< void(Status)> StatusSignal
virtual void StartMonitorStatus(std::string const &id)=0
Start monitoring DAQ status.
virtual auto ConnectStorageSignal(StorageSignal::slot_type const &slot) -> boost::signals2::connection=0
Connect slot to storage change signal.
virtual auto AbortAsync(std::string const &id) -> boost::future< State >=0
Abort merging.
virtual auto ScheduleAsync(std::string const &spec) -> boost::future< State >=0
Schedule merging.
boost::signals2::signal< void(std::filesystem::space_info)> StorageSignal
Adapts boost::asio::io_context into a compatible boost::thread Executor type.
std::chrono::seconds timeout
std::chrono::seconds status_retry_interval
Connection parameters for DPM.
Config class header file.
Contains declaration for Status and ObservableStatus.
Non observable status object that keeps stores status of data acquisition.