1#ifndef DAQ_OP_ASYNC_OP_PARAMS_HPP_
2#define DAQ_OP_ASYNC_OP_PARAMS_HPP_
4#include <boost/asio/io_context.hpp>
5#include <log4cplus/logger.h>
18 std::vector<Alert>
set;
25 auto alert =
MakeAlert(std::move(
id),
"");
29 *it = std::move(alert);
32 cleared.emplace_back(std::move(alert));
45 for (
auto& a : src.
set) {
46 auto it = std::find(active.begin(), active.end(), a);
48 if (it == active.end() || a.timestamp > it->timestamp) {
53 auto it = std::find(active.begin(), active.end(), a);
55 if (it != active.end() && a.timestamp > it->timestamp) {
71 log4cplus::Logger& logger_arg,
72 std::string
const& id_arg,
103 std::string
const&
id;
Stores data acquisition status and allows subscription to status changes.
Stores data acquisition status and allows subscription to status changes.
void ClearAlert(AlertId const &alert)
Clear alert.
void SetAlert(Alert alert)
Set alert.
Alerts const & GetAlerts() const noexcept
Simple class that allows you to keep track of how many replies are pending.
Adapts boost::asio::io_context into a compatible boost::thread Executor type.
Contains declaration for EventLog, ObservableEventLog and related events.
Contains data structure for FITS keywords.
void MergeAlerts(ObservableStatus &dest, AlertState &src)
Merge alerts.
void SetAlert(std::vector< Alert > &alerts, Alert alert)
Set alert.
Alert MakeAlert(std::string_view category, std::string key, std::string description)
Construct alert.
Describes an active Data Acquisition alert.
Uniquely identfies an alert.
Contains declaration for classes related to pending replies.
Declarations for daq::Source and related classes.
Contains declaration for Status and ObservableStatus.
Simple class that holds the source and associated state.
std::vector< Alert > cleared
Parameters required for each async operation.
std::vector< Source< MetaSource > > & meta_sources
Note: Consider vector immutable!a.
AsyncOpParams(ObservableStatus &status_arg, ObservableEventLog &event_log_arg, AlertState &alerts, rad::IoExecutor &executor_arg, log4cplus::Logger &logger_arg, std::string const &id_arg, PendingReplies &pending_replies_arg, std::vector< Source< PrimSource > > &prim_sources_arg, std::vector< Source< MetaSource > > &meta_sources_arg, fits::KeywordFormatter const &kw_formatter_arg)
ObservableEventLog & event_log
fits::KeywordFormatter const & kw_formatter
AsyncOpParams(AsyncOpParams &&)=default
AsyncOpParams(AsyncOpParams const &)=default
AlertState & alerts
Alerts to be merged only after completion of async operation.
std::vector< Source< PrimSource > > & prim_sources
Note: Consider vector immutable!
PendingReplies & pending_replies
rad::IoExecutor & executor
ObservableStatus & status
Async operations should not modify state directly DaqController does that.
log4cplus::Logger & logger
Await specific parameters that is not provided with AsyncOpParams.
AwaitOpParams(AwaitOpParams const &)=default
Duration wait_interval
Total amount of time to wait for condition to be fulfilled.
AwaitOpParams(AwaitOpParams &&)=default
AwaitOpParams(AsyncOpParams common_arg, AwaitOpParams::Duration wait_interval_arg) noexcept
std::chrono::milliseconds Duration