11#ifndef FRAMEWORK_DATASPECUTILS_H
12#define FRAMEWORK_DATASPECUTILS_H
66 template <
typename ContainerT>
67 static std::optional<typename ContainerT::value_type>
find(ContainerT
const& container,
72 for (
auto const& spec : container) {
73 if (
match(spec, origin, description, subSpec)) {
74 return std::make_optional<typename ContainerT::value_type>(spec);
87 return std::find_if(origins.begin(), origins.end(), [&](
auto const&
o) { return DataSpecUtils::asConcreteOrigin(spec) == o; }) != origins.end();
98 return std::find_if(origins.begin(), origins.end(), [&](
auto const&
o) { return dataType.origin == o; }) != origins.end();
107 template <
typename T>
GLuint GLsizei const GLchar * label
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
static std::optional< ConcreteDataMatcher > asOptionalConcreteDataMatcher(OutputSpec const &spec)
static bool partialMatch(InputSpec const &spec, o2::header::DataOrigin const &origin)
static InputSpec fromMetadataString(std::string s)
Create an InputSpec from metadata string.
static std::string describe(InputSpec const &spec)
static void updateOutputList(std::vector< OutputSpec > &list, OutputSpec &&input)
Updates list of OutputSpecs by merging metadata (or adding output).
static bool match(const T &spec, const o2::header::DataHeader &header)
static ConcreteDataTypeMatcher asConcreteDataTypeMatcher(OutputSpec const &spec)
static bool validate(InputSpec const &input)
static bool partialMatch(OutputSpec const &spec, std::array< header::DataOrigin, N > const &origins)
static std::optional< typename ContainerT::value_type > find(ContainerT const &container, const o2::header::DataOrigin &origin, const o2::header::DataDescription &description, const o2::header::DataHeader::SubSpecificationType &subSpec)
static bool match(const InputSpec &spec, o2::header::DataHeader const &dh)
static ConcreteDataMatcher asConcreteDataMatcher(InputSpec const &input)
static std::optional< header::DataHeader::SubSpecificationType > getOptionalSubSpec(OutputSpec const &spec)
Get the subspec, if available.
static InputSpec matchingInput(OutputSpec const &spec)
static data_matcher::DataDescriptorMatcher dataDescriptorMatcherFrom(ConcreteDataMatcher const &concrete)
Build a DataDescriptMatcher which does not care about the subSpec.
static std::optional< framework::ConcreteDataMatcher > optionalConcreteDataMatcherFrom(data_matcher::DataDescriptorMatcher const &matcher)
static std::string restEndpoint(InputSpec const &spec)
static bool match(const OutputSpec &spec, o2::header::DataHeader const &dh)
static std::optional< header::DataDescription > getOptionalDescription(InputSpec const &spec)
Get the description, if available.
static std::optional< header::DataOrigin > getOptionalOrigin(InputSpec const &spec)
Get the origin, if available.
static void updateMatchingSubspec(InputSpec &in, header::DataHeader::SubSpecificationType subSpec)
static bool includes(const InputSpec &left, const InputSpec &right)
Checks if left includes right (or is equal to)
static header::DataOrigin asConcreteOrigin(InputSpec const &spec)
static void updateInputList(std::vector< InputSpec > &list, InputSpec &&input)
Updates list of InputSpecs by merging metadata.
static header::DataDescription asConcreteDataDescription(InputSpec const &spec)
static bool partialMatch(InputSpec const &spec, std::array< header::DataOrigin, N > const &origins)
static OutputSpec asOutputSpec(InputSpec const &spec)
static bool match(InputSpec const &spec, ConcreteDataMatcher const &target)