|
ifw-daq
1.0.0
IFW Data Acquisition modules
|
Go to the documentation of this file.
8 #ifndef OCF_DAQ_DAQ_CONTROLLER_HPP_
9 #define OCF_DAQ_DAQ_CONTROLLER_HPP_
19 #include <boost/thread/future.hpp>
20 #include <boost/asio/io_context.hpp>
21 #include <boost/asio/steady_timer.hpp>
22 #include <log4cplus/logger.h>
23 #include <gsl/pointers>
25 #include <Metadaqif.hpp>
49 std::function<bool()>>;
62 std::function<boost::future<
void>(op::AsyncOpParams)>
start;
223 virtual boost::future<State>
224 AwaitAsync(std::vector<std::string> sources, std::chrono::milliseconds timeout) = 0;
275 static std::shared_ptr<DaqControllerImpl> Create(boost::asio::io_context& io_context,
277 std::shared_ptr<ObservableStatus> status,
278 std::shared_ptr<ObservableEventLog> event_log,
281 boost::future<State> StartAsync()
override;
282 boost::future<Status> StopAsync(
ErrorPolicy policy)
override;
283 boost::future<Status> AbortAsync(
ErrorPolicy policy)
override;
286 AwaitAsync(std::vector<std::string> sources, std::chrono::milliseconds timeout)
override;
288 std::shared_ptr<ObservableStatus> GetStatus()
DAQ_NOEXCEPT override;
289 std::shared_ptr<ObservableStatus const> GetStatus()
const DAQ_NOEXCEPT override;
290 std::shared_ptr<ObservableEventLog> GetEventLog()
DAQ_NOEXCEPT override;
297 constexpr log4cplus::Logger
const&
GetLogger()
const noexcept;
323 std::unique_ptr<FitsController> fits_controller,
324 std::shared_ptr<ObservableStatus> status,
325 std::shared_ptr<ObservableEventLog> event_log,
330 template<
class T,
class... Args>
332 m_event_log->EmplaceEvent<T>(std::forward<Args>(args)...);
351 void InitiateAwaitPrimarySources();
353 void SetErrorFlag(
bool error) noexcept;
354 void SetState(StateVariant&& s) noexcept;
356 std::optional<std::variant<gsl::not_null<Source<PrimSource>*>,
357 gsl::not_null<Source<MetaSource>*>>>
358 FindSource(std::string_view source_id);
361 template <
class SourceType>
362 std::vector<Source<SourceType>> MakeSources(std::vector<SourceType> sources);
378 std::vector<std::unique_ptr<boost::asio::steady_timer>>
m_timers;
394 #endif // OCF_DAQ_DAQ_CONTROLLER_HPP_
Contains declaration for classes related to pending replies.
AsyncOperations & operator=(AsyncOperations const &)=default
State
Observable states of the data acquisition process.
Contains declarations for the helper functions to initiate operations.
Declarations for daq::Source and related classes.
log4cplus::Logger m_logger
std::unique_ptr< FitsController > m_fits_ctl
AsyncOperations(AsyncOperations &&)=default
std::shared_ptr< ObservableEventLog > m_event_log
Structure carrying properties needed to start a DataAcquisition.
Adapts boost::asio::io_context into a compatible boost::thread Executor type.
Implements daq::DaqController
virtual boost::future< State > AwaitAsync(std::vector< std::string > sources, std::chrono::milliseconds timeout)=0
Awaits that data acquisition stops or aborts.
std::vector< Source< PrimSource > > m_prim_sources
Note: Consider vector immutable!
Stores data acquisition status and allows subscription to status changes.
void UpdateKeywords(KeywordVector &to, KeywordVector const &from)
Updates a with keywords from b.
DaqProperties m_properties
Await specific parameters that is not provided with AsyncOpParams.
virtual boost::future< State > StartAsync()=0
Starts the data acquisition.
virtual ~DaqController()=default
virtual boost::future< Status > AbortAsync(ErrorPolicy policy)=0
Aborts the data acquisition.
virtual void UpdateKeywords(fits::KeywordVector const &keywords)=0
Updates (replace or add) list of keywords.
Contains declaration for EventLog, ObservableEventLog and related events.
ocmif::DaqSubState MakeState(daq::State state) noexcept
Converts daq::State to DaqSubstate.
bool IsValid() const noexcept
Config class header file.
AsyncOperations & operator=(AsyncOperations &&)=default
std::vector< Source< MetaSource > > m_meta_sources
Note: Consider vector immutable!
std::function< boost::future< Result< DpParts > >ErrorPolicy, op::AsyncOpParams)> stop
Utility class that represents a result and an error.
rad::IoExecutor m_executor
std::vector< std::unique_ptr< boost::asio::steady_timer > > m_timers
std::variant< NotStarted, Starting, Acquiring, Stopping, Stopped, Aborting, Aborted > StateVariant
Contains declaration for Status and ObservableStatus.
std::pair< boost::future< Result< DpParts > >, std::function< bool()> > AwaitReturnType
AsyncOperations m_async_ops
std::function< AwaitReturnType(op::AwaitOpParams)> await_prim
log4cplus::Logger & GetLogger()
boost::asio::io_context & m_io_ctx
std::ostream & operator<<(std::ostream &os, DaqController const &daq)
std::vector< KeywordVariant > KeywordVector
Vector of keywords.
virtual State GetState() const DAQ_NOEXCEPT=0
Parameters required for each async operation.
Stores data acquisition status and allows subscription to status changes.
std::shared_ptr< ObservableStatus > m_status
Declares daq::State and related functions.
std::function< boost::future< void >op::AsyncOpParams)> start
Contains declaration for DpPart.
ErrorPolicy
Error policy supported by certain operations.
Contains declaration of daq::Properties.
std::function< boost::future< Result< void > >ErrorPolicy, op::AsyncOpParams)> abort
Controls the execution of single data acquisition that ultimately result in a set of FITS keywords an...
void AddEvent(Args &&... args)
AsyncOperations()
Default constructs object with standard async operations.
std::shared_ptr< PendingReplies > m_pending_replies
std::vector< DpPart > DpParts
std::function< bool()> m_abort_await_primary_sources
If DaqController is awaiting the completion of primary data sources this function will hold the abort...
virtual boost::future< Status > StopAsync(ErrorPolicy policy)=0
Stops the data acquisition.
AsyncOperations(AsyncOperations const &)=default
Contains error related declarations for DAQ.