ifw-daq 3.1.0
IFW Data Acquisition modules
Loading...
Searching...
No Matches
startDaqV2.hpp
Go to the documentation of this file.
1/**
2 * @file
3 * @ingroup daq_libjson
4 * @copyright
5 * (c) Copyright ESO 2022
6 * All Rights Reserved
7 * ESO (eso.org) is an Intergovernmental Organisation, and therefore special legal conditions apply.
8 */
9#ifndef DAQ_STARTDAQV2_HPP
10#define DAQ_STARTDAQV2_HPP
11#include <chrono>
12#include <optional>
13#include <variant>
14#include <vector>
15
16#include <nlohmann/json.hpp>
17
20
21namespace daq::json {
22
24 using SchemaError::SchemaError;
25};
26
27/**
28 * Structure with a close mapping from JSON representation in the StartDaqV2 MAL request.
29 *
30 * Parts of this will end up being used in `CreateDataProductSpecification()`, like the keyword
31 * rules.
32 */
34 struct DataSource {
35 std::string source_name;
36 std::string rr_uri;
37 std::optional<InitialKeywords> initial_keywords;
39 };
40 struct PrimaryDataSource final : DataSource {};
41 struct MetadataSource final : DataSource {};
42
44 std::variant<PrimaryDataSource, MetadataSource, FitsKeywordsSource, FitsFileSource>;
45
46 struct MergeTarget {
47 std::string source_name;
48 };
49
50 std::string id;
51 std::vector<DataSourceTypes> sources;
53
54 std::optional<MergeTarget> merge_target;
55 std::optional<std::chrono::milliseconds> await_completion_interval;
56 std::string file_prefix;
57};
58
60 StartDaqV2Spec::PrimaryDataSource const& rhs) noexcept;
62 StartDaqV2Spec::MetadataSource const& rhs) noexcept;
64 StartDaqV2Spec::MergeTarget const& rhs) noexcept;
65
66bool operator==(StartDaqV2Spec const& lhs, StartDaqV2Spec const& rhs) noexcept;
67
68/**
69 * Parse StartDaqSpec
70 *
71 * @throw StartDaqV2SpecError on invalid schema.
72 */
73StartDaqV2Spec ParseStartDaqV2Spec(nlohmann::json const& json);
74
75/**
76 * Serialize to JSON
77 *
78 * @param json
79 * @param spec Specification to serialize
80 */
81void to_json(nlohmann::json& json, StartDaqV2Spec const& spec); // NOLINT
82
83} // namespace daq::json
84
85#endif // DAQ_STARTDAQV2_HPP
std::optional< MergeTarget > merge_target
Definition: startDaqV2.hpp:54
std::vector< KeywordRuleTypes > KeywordRules
std::vector< ReceiverTypes > ReceiverList
std::optional< std::chrono::milliseconds > await_completion_interval
Definition: startDaqV2.hpp:55
bool operator==(KeywordFilter const &lhs, KeywordFilter const &rhs) noexcept
std::variant< PrimaryDataSource, MetadataSource, FitsKeywordsSource, FitsFileSource > DataSourceTypes
Definition: startDaqV2.hpp:44
StartDaqV2Spec ParseStartDaqV2Spec(nlohmann::json const &json)
Parse StartDaqSpec.
Definition: startDaqV2.cpp:46
void to_json(nlohmann::json &out, KeywordFilter const &s)
std::vector< DataSourceTypes > sources
Definition: startDaqV2.hpp:51
Structure with a close mapping from JSON representation in the StartDaqV2 MAL request.
Definition: startDaqV2.hpp:33
JSON Schema error.
Definition: schemaError.hpp:18
std::optional< InitialKeywords > initial_keywords
Definition: startDaqV2.hpp:37