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>
18#include <log4cplus/logger.h>
25class DpmDaqControlAsync;
31namespace mal = ::elt::mal;
43 using StorageSignal = boost::signals2::signal<void(std::filesystem::space_info)>;
49 virtual auto ScheduleAsync(std::string
const& spec, std::optional<std::string>
const& status)
50 -> boost::future<State> = 0;
55 virtual auto AbortAsync(std::string
const&
id) -> boost::future<State> = 0;
96 std::chrono::seconds
timeout = std::chrono::seconds(5);
115 virtual auto ScheduleAsync(std::string
const& spec, std::optional<std::string>
const& status)
116 -> boost::future<State>
override;
121 virtual auto AbortAsync(std::string
const&
id) -> boost::future<State>
override;
149 -> boost::signals2::connection
override;
157 -> boost::signals2::connection
override;
160 void RequestStatus(std::string
const&
id);
161 void ScheduleRequestStatus(std::string
const&
id);
162 void UpdateStatus(
Status const& status);
166 boost::asio::io_context& m_io_ctx;
171 log4cplus::Logger m_logger;
176 std::shared_ptr<daqif::DpmDaqControlAsync> m_dpmif;
177 std::unique_ptr<Subscriptions> m_subs;
179 std::unordered_map<std::string, boost::asio::steady_timer> m_timers;
181 std::shared_ptr<bool> m_liveness = std::make_shared<bool>(
true);
DpmClient::StorageSignal StorageSignal
Retry delay when requesting status.
virtual void StopMonitorStatus(std::string const &id) override
Stop monitoring DAQ status.
virtual auto ScheduleAsync(std::string const &spec, std::optional< std::string > const &status) -> boost::future< State > override
Schedule merging.
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.
DpmClient::StatusSignal StatusSignal
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.
virtual auto ScheduleAsync(std::string const &spec, std::optional< std::string > const &status) -> boost::future< State >=0
Schedule merging.
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.
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.