12#ifndef RTCTK_REUSABLECOMPONENT_TELREPUB_MUDPIPROCESSORERROR_HPP
13#define RTCTK_REUSABLECOMPONENT_TELREPUB_MUDPIPROCESSORERROR_HPP
17#include <system_error>
20#include <fmt/format.h>
21#include <fmt/ostream.h>
27template <
class ErrorStruct>
36 return m_error_info.has_value();
41 return HasError() and std::holds_alternative<E>(*m_error_info);
46 if (not HasError<E>()) {
47 throw std::logic_error(
"bad error access");
49 return std::get<E>(*m_error_info);
54 throw std::logic_error(
"bad error access");
57 std::visit([&](
auto&& arg) { msg = arg.What(); }, *m_error_info);
62 std::optional<typename ErrorStruct::VariantType> m_error_info;
78 inline std::string
What()
const {
80 "Topic [{}] SampleId: {} FrameId: {:2}. FrameId out of range (1..{}).",
96 inline std::string
What()
const {
98 "Topic [{}] SampleId: {} FrameId: {:2} Expected SampleId {}. Unexpected SampleId, "
115 inline std::string
What()
const {
117 "Topic [{}] SampleId: {} FrameId: {:2} Expected FrameId {:2}. Unexpected FrameId, "
134 inline std::string
What()
const {
136 "Topic [{}] SampleId: {}. Topic size exceeded. Max topic size: {}, Topic size: {}.",
151 inline std::string
What()
const {
153 "Topic [{}] SampleId: {} FrameId: {:2}. Synchronising: frame rejected.",
167 inline std::string
What()
const {
168 return fmt::format(
"Topic [{}] SampleId: {}. Wrangler Error: {}",
185 inline std::string
What()
const {
187 "Topic [{}] SampleId: {} FrameId: {:2}. Packet Size mismatch: actual size {} "
207 inline std::string
What()
const {
209 "Topic [{}] SampleId: {} FrameId: {:2}. Wrong MUDPI Checksum: {} should be: {}",
MUDPI structure definition.
int int32_t
Definition: mudpi.h:22
Definition: ddsPubThread.cpp:17
Definition: mudpiProcessingError.hpp:28
ErrorCode(typename ErrorStruct::VariantType err)
Definition: mudpiProcessingError.hpp:31
bool HasError() const
Definition: mudpiProcessingError.hpp:40
E GetError() const
Definition: mudpiProcessingError.hpp:45
bool HasError() const
Definition: mudpiProcessingError.hpp:35
std::string What() const
Definition: mudpiProcessingError.hpp:52
MUDPI Checksum error.
Definition: mudpiProcessingError.hpp:201
uint16_t frame_id
Definition: mudpiProcessingError.hpp:204
std::string What() const
Definition: mudpiProcessingError.hpp:207
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:202
uint16_t actual_checksum
Definition: mudpiProcessingError.hpp:205
uint32_t sample_id
Definition: mudpiProcessingError.hpp:203
uint16_t expected_checksum
Definition: mudpiProcessingError.hpp:206
FrameId out of range.
Definition: mudpiProcessingError.hpp:73
std::string What() const
Definition: mudpiProcessingError.hpp:78
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:74
uint16_t num_frames
Definition: mudpiProcessingError.hpp:77
uint16_t frame_id
Definition: mudpiProcessingError.hpp:76
uint32_t sample_id
Definition: mudpiProcessingError.hpp:75
(UDP) Packet Size error.
Definition: mudpiProcessingError.hpp:179
std::string What() const
Definition: mudpiProcessingError.hpp:185
uint32_t sample_id
Definition: mudpiProcessingError.hpp:181
size_t expected_packet_size
Definition: mudpiProcessingError.hpp:184
uint16_t frame_id
Definition: mudpiProcessingError.hpp:182
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:180
size_t actual_packet_size
Definition: mudpiProcessingError.hpp:183
Synchronising.
Definition: mudpiProcessingError.hpp:147
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:148
std::string What() const
Definition: mudpiProcessingError.hpp:151
uint32_t sample_id
Definition: mudpiProcessingError.hpp:149
uint16_t frame_id
Definition: mudpiProcessingError.hpp:150
unexpected frame id inside a sample
Definition: mudpiProcessingError.hpp:110
uint32_t expected_frame_id
Definition: mudpiProcessingError.hpp:114
uint16_t frame_id
Definition: mudpiProcessingError.hpp:113
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:111
std::string What() const
Definition: mudpiProcessingError.hpp:115
uint32_t sample_id
Definition: mudpiProcessingError.hpp:112
unexpected sample id, so we need to resynchronize
Definition: mudpiProcessingError.hpp:91
uint32_t sample_id
Definition: mudpiProcessingError.hpp:93
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:92
uint16_t frame_id
Definition: mudpiProcessingError.hpp:94
uint32_t expected_sample_id
Definition: mudpiProcessingError.hpp:95
std::string What() const
Definition: mudpiProcessingError.hpp:96
Wrangler Error.
Definition: mudpiProcessingError.hpp:163
uint32_t sample_id
Definition: mudpiProcessingError.hpp:165
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:164
std::error_code error
Definition: mudpiProcessingError.hpp:166
std::string What() const
Definition: mudpiProcessingError.hpp:167
MUDPI Processor errors.
Definition: mudpiProcessingError.hpp:69
std::variant< FrameIdOutOfRange, UnexpectedSampleId, UnexpectedFrameId, TopicTooLong, Synchronising, WranglerError, PacketSizeError, ChecksumError > VariantType
Definition: mudpiProcessingError.hpp:225