ifw-daq  1.0.0
IFW Data Acquisition modules
error.cpp
Go to the documentation of this file.
1 /**
2  * @file
3  * @ingroup daq_ocm_libdaq
4  * @copyright 2021 ESO - European Southern Observatory
5  *
6  * @brief Contains error related definitions for DAQ
7  */
8 #include <daq/error.hpp>
9 
10 #include <ostream>
11 
12 #include <fmt/format.h>
13 
14 
15 namespace daq {
16 
17 std::ostream& operator<<(std::ostream& os, ErrorPolicy policy) {
18  switch (policy) {
19  case ErrorPolicy::Strict:
20  os << "Strict";
21  break;
23  os << "Tolerant";
24  break;
25  default:
26  os << "n/a";
27  }
28  return os;
29 }
30 
31 DaqSourceError::DaqSourceError(std::string request, std::string source, std::string message)
32  : m_request(std::move(request)), m_source(std::move(source)), m_message(std::move(message)) {
33  m_formatted = fmt::format(
34  "Data source error: source={}, request={}, message={}", m_source, m_request, m_message);
35 }
36 
37 char const* DaqSourceError::what() const noexcept {
38  return m_formatted.c_str();
39 }
40 
41 DaqSourceErrors::DaqSourceErrors(std::vector<std::exception_ptr> errors) {
42  std::copy(errors.begin(), errors.end(), std::back_inserter(m_errors));
43 }
44 
46  std::vector<std::variant<DaqSourceError, std::exception_ptr>> errors)
47  : m_errors(std::move(errors)) {
48 }
49 
50 } // namespace daq
daq::DaqSourceErrors::m_errors
std::vector< std::variant< DaqSourceError, std::exception_ptr > > m_errors
Definition: error.hpp:89
daq
Definition: daqController.cpp:18
daq::DaqSourceError::DaqSourceError
DaqSourceError(std::string request, std::string source, std::string message)
Definition: error.cpp:31
daq::DaqSourceError::m_source
std::string m_source
Definition: error.hpp:74
daq::DaqSourceError::m_formatted
std::string m_formatted
Definition: error.hpp:76
daq::operator<<
std::ostream & operator<<(std::ostream &os, DaqController const &daq)
Definition: daqController.cpp:49
daq::DaqSourceError::m_request
std::string m_request
Definition: error.hpp:73
daq::DaqSourceError::m_message
std::string m_message
Definition: error.hpp:75
daq::ErrorPolicy
ErrorPolicy
Error policy supported by certain operations.
Definition: error.hpp:25
daq::ErrorPolicy::Strict
@ Strict
Any error is considered fatal and may lead to the operation being aborted.
daq::DaqSourceErrors::DaqSourceErrors
DaqSourceErrors(std::vector< std::exception_ptr > errors)
Definition: error.cpp:41
error.hpp
Contains error related declarations for DAQ.
daq::DaqSourceError::what
char const * what() const noexcept override
Definition: error.cpp:37