RTC Toolkit 4.0.2
Loading...
Searching...
No Matches
mudpiProcessingError.hpp
Go to the documentation of this file.
1
12#ifndef RTCTK_REUSABLECOMPONENT_TELREPUB_MUDPIPROCESSORERROR_HPP
13#define RTCTK_REUSABLECOMPONENT_TELREPUB_MUDPIPROCESSORERROR_HPP
14
15#include <optional>
16#include <string>
17#include <system_error>
18#include <variant>
19
20#include <fmt/format.h>
21#include <fmt/ostream.h>
22
23#include "mudpi.h"
24
25namespace rtctk::telRepub {
26
27template <class ErrorStruct>
28struct ErrorCode {
29 ErrorCode() = default;
30
31 ErrorCode(typename ErrorStruct::VariantType err) {
32 m_error_info = err;
33 }
34
35 bool HasError() const {
36 return m_error_info.has_value();
37 }
38
39 template <typename E>
40 bool HasError() const {
41 return HasError() and std::holds_alternative<E>(*m_error_info);
42 }
43
44 template <typename E>
45 E GetError() const {
46 if (not HasError<E>()) {
47 throw std::logic_error("bad error access");
48 }
49 return std::get<E>(*m_error_info);
50 }
51
52 std::string What() const {
53 if (not HasError()) {
54 throw std::logic_error("bad error access");
55 }
56 std::string msg;
57 std::visit([&](auto&& arg) { msg = arg.What(); }, *m_error_info);
58 return msg;
59 }
60
61private:
62 std::optional<typename ErrorStruct::VariantType> m_error_info;
63};
64
75 uint32_t sample_id;
76 uint16_t frame_id;
77 uint16_t num_frames;
78 inline std::string What() const {
79 return fmt::format(
80 "Topic [{}] SampleId: {} FrameId: {:2}. FrameId out of range (1..{}).",
85 }
86 };
87
93 uint32_t sample_id;
94 uint16_t frame_id;
96 inline std::string What() const {
97 return fmt::format(
98 "Topic [{}] SampleId: {} FrameId: {:2} Expected SampleId {}. Unexpected SampleId, "
99 "frame rejected.",
100 topic_id,
101 sample_id,
102 frame_id,
104 }
105 };
106
112 uint32_t sample_id;
113 uint16_t frame_id;
115 inline std::string What() const {
116 return fmt::format(
117 "Topic [{}] SampleId: {} FrameId: {:2} Expected FrameId {:2}. Unexpected FrameId, "
118 "frame rejected.",
119 topic_id,
120 sample_id,
121 frame_id,
123 }
124 };
125
131 uint32_t sample_id;
132 uint32_t max_size;
134 inline std::string What() const {
135 return fmt::format(
136 "Topic [{}] SampleId: {}. Topic size exceeded. Max topic size: {}, Topic size: {}.",
137 topic_id,
138 sample_id,
139 max_size,
141 }
142 };
143
149 uint32_t sample_id;
150 uint16_t frame_id;
151 inline std::string What() const {
152 return fmt::format(
153 "Topic [{}] SampleId: {} FrameId: {:2}. Synchronising: frame rejected.",
154 topic_id,
155 sample_id,
156 frame_id);
157 }
158 };
159
165 uint32_t sample_id;
166 std::error_code error;
167 inline std::string What() const {
168 return fmt::format("Topic [{}] SampleId: {}. Wrangler Error: {}",
169 topic_id,
170 sample_id,
171 error.message());
172 }
173 };
174
181 uint32_t sample_id;
182 uint16_t frame_id;
185 inline std::string What() const {
186 return fmt::format(
187 "Topic [{}] SampleId: {} FrameId: {:2}. Packet Size mismatch: actual size {} "
188 "expected size {}",
189 topic_id,
190 sample_id,
191 frame_id,
194 }
195 };
196
203 uint32_t sample_id;
204 uint16_t frame_id;
207 inline std::string What() const {
208 return fmt::format(
209 "Topic [{}] SampleId: {} FrameId: {:2}. Wrong MUDPI Checksum: {} should be: {}",
210 topic_id,
211 sample_id,
212 frame_id,
215 }
216 };
217
218 using VariantType = std::variant<FrameIdOutOfRange,
226};
227
228} // namespace rtctk::telRepub
229
230#endif // RTCTK_REUSABLECOMPONENT_TELREPUB_MUDPIPROCESSORERROR_HPP
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
topic too long
Definition: mudpiProcessingError.hpp:129
uint32_t max_size
Definition: mudpiProcessingError.hpp:132
uint32_t sample_id
Definition: mudpiProcessingError.hpp:131
size_t actual_size
Definition: mudpiProcessingError.hpp:133
std::string What() const
Definition: mudpiProcessingError.hpp:134
mudpi::int32_t topic_id
Definition: mudpiProcessingError.hpp:130
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