ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
conversion.hpp
Go to the documentation of this file.
1/**
2 * @file
3 * @ingroup daq_libdaq
4 * @copyright 2022 ESO - European Southern Observatory
5 *
6 * @brief Contains support functions for daqif
7 */
8#ifndef DAQ_CONVERSION_HPP_
9#define DAQ_CONVERSION_HPP_
10#include "config.hpp"
11
12#include <daqif/state.hpp>
13
14#include <chrono>
15#include <filesystem>
16#include <string_view>
17
18namespace daq {
19struct Status;
20enum class State;
21
22/**
23 * Convert daq::Status -> daqif::DaqStatus by populating from @a rhs.
24 */
25daqif::DaqStatus& operator<<(daqif::DaqStatus& status, Status const& rhs);
26
27/**
28 * Convert daq::Status -> daqif::InternalDaqStatus by populating from @a rhs.
29 */
30daqif::InternalDaqStatus& operator<<(daqif::InternalDaqStatus& status, Status const& rhs);
31
32/**
33 * Convert daqif::InternalDaqStatus -> daq::Status by populating from @a rhs.
34 */
35Status& operator<<(Status& status, daqif::InternalDaqStatus const& rhs);
36
37template <class Clock, class Duration = typename Clock::duration>
38double FromTimePoint(std::chrono::time_point<Clock, Duration> const& time);
39
40template <class Clock, class Duration = typename Clock::duration>
41std::chrono::time_point<Clock, Duration> ToTimePoint(double time);
42
43/**
44 * Convert daqif::DaqStatus -> daq::Status by populating from @a rhs.
45 */
46Status& operator<<(Status& status, daqif::DaqStatus const& rhs);
47
48/**
49 * Populate @a space from @a rhs.
50 */
51std::filesystem::space_info&
52operator<<(std::filesystem::space_info& space, daqif::StorageStatus const& rhs);
53
54/**
55 * Populate @a storage from @a rhs.
56 */
57daqif::StorageStatus& operator<<(daqif::StorageStatus& storage, std::filesystem::space_info& rhs);
58
59/**
60 * Converts daq::State to DaqSubstate.
61 */
62daqif::FullState MakeState(State state) noexcept;
63
64/**
65 * Converts the full state to daq::State.
66 */
68
69/**
70 * @return string representation of enumeration.
71 */
72std::string_view ToString(daqif::DaqState state) noexcept;
73
74/**
75 * @return string representation of enumeration.
76 */
77std::string_view ToString(daqif::DaqSubState state) noexcept;
78
79template <class Clock, class Duration>
80double FromTimePoint(std::chrono::time_point<Clock, Duration> const& time) {
81 using Seconds = std::chrono::duration<double, std::ratio<1>>;
82 return std::chrono::time_point_cast<Seconds>(time).time_since_epoch().count();
83}
84
85template <class Clock, class Duration>
86std::chrono::time_point<Clock, Duration> ToTimePoint(double duration) {
87 using Seconds = std::chrono::duration<double, std::ratio<1>>;
88 return std::chrono::time_point<Clock, Duration>(
89 std::chrono::duration_cast<Duration>(Seconds(duration)));
90}
91} // namespace daq
92#endif // #ifndef DAQ_CONVERSION_HPP_
Contains State support functions for daqif.
daqif::FullState MakeState(State state) noexcept
Converts daq::State to DaqSubstate.
Definition: conversion.cpp:77
std::string_view ToString(daqif::DaqState state) noexcept
Definition: conversion.cpp:160
std::ostream & operator<<(std::ostream &os, AsyncProcessIf const &proc)
Formats proc representation in the form [<pid>] <args>
State
Observable states of the data acquisition process.
Definition: state.hpp:41
double FromTimePoint(std::chrono::time_point< Clock, Duration > const &time)
Definition: conversion.hpp:80
std::chrono::time_point< Clock, Duration > ToTimePoint(double time)
Definition: conversion.hpp:86
Describes the full state and substate.
Definition: state.hpp:17
Config class header file.