HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
dataAcquisition.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2020-2025 European Southern Observatory (ESO)
2//
3// SPDX-License-Identifier: LGPL-3.0-only
4
13#ifndef HLCC_TELIF_TELIF_DATAACQUISITION_HPP
14#define HLCC_TELIF_TELIF_DATAACQUISITION_HPP
15
16#include <vector>
17#include <list>
18#include <chrono>
19#include <memory>
20#include <mutex>
21
22#include <Metadaqif.hpp>
23
24#include "telif/logger.hpp"
27
28
29namespace hlcc::telif {
30
36public:
37
47
53 DataAcquisition(OldbInterface &oldbif, const std::string &id);
54
58 virtual ~DataAcquisition();
59
66 bool ProcessCommand(DaqCmds command);
67
73 const std::string &GetId() const;
74
80 const metadaqif::DaqState &GetState() const;
81
87 std::string GetStateStr() const;
88
94 const std::string &GetMessage() const;
95
101 const std::vector<std::string> &GetFiles() const;
102
108 std::string GetKeywords();
109
115 uint64_t GetTimestamp() const;
116
117 DataAcquisition() = delete;
120
121private:
122 OldbInterface& m_oldb_interface;
123 std::string m_id; /* Unique data acquisition identifier */
124 metadaqif::DaqState m_state; /* Data acquisitions status enumeration */
125 std::string m_message; /* If DAQ failed this field should contain a message with details */
126 std::vector<std::string> m_files; /* If DAQ succeeds this enumerates the produced files */
127 uint64_t m_timestamp; /* Timestamp of last status update (DAQ state change) */
128 FitsKeywords m_fits_keywords;
129
136 bool SetState(metadaqif::DaqState new_state);
137
144 bool SetMessage(const std::string &mmessage);
145
152 bool SetFiles(const std::vector<std::string> &mfiles);
153
154};
155
161public:
162
168
175
183 std::shared_ptr<DataAcquisition> GetAcquisition(const std::string &given_id);
184
194 std::shared_ptr<DataAcquisition> CreateAcquisition(OldbInterface& moldbif, std::string given_id);
195
203 bool RemoveAcquisition(const std::string &given_id);
204
207
208private:
209 std::list<std::shared_ptr<DataAcquisition>> m_daq_list; /* List of all active acquisitions */
210 const unsigned int max_number_acquisitions;
211};
212
213} // namespace hlcc::telif
214
215#endif // HLCC_TELIF_TELIF_DATAACQUISITION_HPP
Default logger name.
OldbInterface class header file.
Definition dataAcquisition.hpp:160
DataAcquisitionList()
Definition dataAcquisition.cpp:194
std::shared_ptr< DataAcquisition > CreateAcquisition(OldbInterface &moldbif, std::string given_id)
Definition dataAcquisition.cpp:214
int GetNumberAcquisitions()
Definition dataAcquisition.cpp:197
std::shared_ptr< DataAcquisition > GetAcquisition(const std::string &given_id)
Definition dataAcquisition.cpp:201
DataAcquisitionList & operator=(const DataAcquisitionList &)=delete
Disable copy constructor.
DataAcquisitionList(const DataAcquisitionList &)=delete
bool RemoveAcquisition(const std::string &given_id)
Definition dataAcquisition.cpp:273
Definition dataAcquisition.hpp:35
const std::string & GetMessage() const
Definition dataAcquisition.cpp:155
const std::vector< std::string > & GetFiles() const
Definition dataAcquisition.cpp:166
virtual ~DataAcquisition()
Definition dataAcquisition.cpp:32
bool ProcessCommand(DaqCmds command)
Definition dataAcquisition.cpp:36
DataAcquisition & operator=(const DataAcquisition &)=delete
Disable copy constructor.
std::string GetStateStr() const
Definition dataAcquisition.cpp:119
uint64_t GetTimestamp() const
Definition dataAcquisition.cpp:184
const std::string & GetId() const
Definition dataAcquisition.cpp:109
std::string GetKeywords()
Definition dataAcquisition.cpp:177
DaqCmds
Definition dataAcquisition.hpp:42
@ DC_START
Definition dataAcquisition.hpp:43
@ DC_STOP
Definition dataAcquisition.hpp:44
@ DC_ABORT
Definition dataAcquisition.hpp:45
DataAcquisition(const DataAcquisition &)=delete
Disable default constructo.
const metadaqif::DaqState & GetState() const
Definition dataAcquisition.cpp:114
Definition dataAcquisitionFits.hpp:280
Definition oldbInterface.hpp:47
DataAcquisitionFits class header file.
Definition configTest.cpp:22