mqtt_cpp
reason_code.hpp
Go to the documentation of this file.
1 // Copyright Takatoshi Kondo 2018
2 //
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6 
7 #if !defined(MQTT_REASON_CODE_HPP)
8 #define MQTT_REASON_CODE_HPP
9 
10 #include <cstdint>
11 #include <ostream>
12 
13 #include <mqtt/namespace.hpp>
15 
16 namespace MQTT_NS {
17 
18 enum class suback_return_code : std::uint8_t {
19  success_maximum_qos_0 = 0x00,
20  success_maximum_qos_1 = 0x01,
21  success_maximum_qos_2 = 0x02,
22  failure = 0x80,
23 };
24 
25 constexpr
27  switch(v)
28  {
29  case suback_return_code::success_maximum_qos_0: return "success_maximum_qos_0";
30  case suback_return_code::success_maximum_qos_1: return "success_maximum_qos_1";
31  case suback_return_code::success_maximum_qos_2: return "success_maximum_qos_2";
32  case suback_return_code::failure: return "failure";
33  default: return "unknown_suback_return_code";
34  }
35 }
36 
37 inline
38 std::ostream& operator<<(std::ostream& os, suback_return_code val)
39 {
40  os << suback_return_code_to_str(val);
41  return os;
42 }
43 
45  return static_cast<suback_return_code>(q);
46 }
47 
48 namespace v5 {
49 
50 enum class connect_reason_code : std::uint8_t {
51  success = 0x00,
52  unspecified_error = 0x80,
53  malformed_packet = 0x81,
54  protocol_error = 0x82,
59  not_authorized = 0x87,
60  server_unavailable = 0x88,
61  server_busy = 0x89,
62  banned = 0x8a,
63  server_shutting_down = 0x8b,
65  topic_name_invalid = 0x90,
66  packet_too_large = 0x95,
67  quota_exceeded = 0x97,
69  retain_not_supported = 0x9a,
70  qos_not_supported = 0x9b,
71  use_another_server = 0x9c,
72  server_moved = 0x9d,
74 };
75 
76 constexpr
78  switch(v)
79  {
80  case connect_reason_code::success: return "success";
81  case connect_reason_code::unspecified_error: return "unspecified_error";
82  case connect_reason_code::malformed_packet: return "malformed_packet";
83  case connect_reason_code::protocol_error: return "protocol_error";
84  case connect_reason_code::implementation_specific_error: return "implementation_specific_error";
85  case connect_reason_code::unsupported_protocol_version: return "unsupported_protocol_version";
86  case connect_reason_code::client_identifier_not_valid: return "client_identifier_not_valid";
87  case connect_reason_code::bad_user_name_or_password: return "bad_user_name_or_password";
88  case connect_reason_code::not_authorized: return "not_authorized";
89  case connect_reason_code::server_unavailable: return "server_unavailable";
90  case connect_reason_code::server_busy: return "server_busy";
91  case connect_reason_code::banned: return "banned";
92  case connect_reason_code::server_shutting_down: return "server_shutting_down";
93  case connect_reason_code::bad_authentication_method: return "bad_authentication_method";
94  case connect_reason_code::topic_name_invalid: return "topic_name_invalid";
95  case connect_reason_code::packet_too_large: return "packet_too_large";
96  case connect_reason_code::quota_exceeded: return "quota_exceeded";
97  case connect_reason_code::payload_format_invalid: return "payload_format_invalid";
98  case connect_reason_code::retain_not_supported: return "retain_not_supported";
99  case connect_reason_code::qos_not_supported: return "qos_not_supported";
100  case connect_reason_code::use_another_server: return "use_another_server";
101  case connect_reason_code::server_moved: return "server_moved";
102  case connect_reason_code::connection_rate_exceeded: return "connection_rate_exceeded";
103  default: return "unknown_connect_reason_code";
104  }
105 }
106 
107 inline
108 std::ostream& operator<<(std::ostream& os, connect_reason_code val)
109 {
110  os << connect_reason_code_to_str(val);
111  return os;
112 }
113 
114 enum class disconnect_reason_code : std::uint8_t {
115  normal_disconnection = 0x00,
117  unspecified_error = 0x80,
118  malformed_packet = 0x81,
119  protocol_error = 0x82,
121  not_authorized = 0x87,
122  server_busy = 0x89,
123  server_shutting_down = 0x8b,
124  keep_alive_timeout = 0x8d,
125  session_taken_over = 0x8e,
126  topic_filter_invalid = 0x8f,
127  topic_name_invalid = 0x90,
129  topic_alias_invalid = 0x94,
130  packet_too_large = 0x95,
131  message_rate_too_high = 0x96,
132  quota_exceeded = 0x97,
133  administrative_action = 0x98,
134  payload_format_invalid = 0x99,
135  retain_not_supported = 0x9a,
136  qos_not_supported = 0x9b,
137  use_another_server = 0x9c,
138  server_moved = 0x9d,
141  maximum_connect_time = 0xa0,
144 };
145 
146 constexpr
148  switch(v)
149  {
150  case disconnect_reason_code::normal_disconnection: return "normal_disconnection";
151  case disconnect_reason_code::disconnect_with_will_message: return "disconnect_with_will_message";
152  case disconnect_reason_code::unspecified_error: return "unspecified_error";
153  case disconnect_reason_code::malformed_packet: return "malformed_packet";
154  case disconnect_reason_code::protocol_error: return "protocol_error";
155  case disconnect_reason_code::implementation_specific_error: return "implementation_specific_error";
156  case disconnect_reason_code::not_authorized: return "not_authorized";
157  case disconnect_reason_code::server_busy: return "server_busy";
158  case disconnect_reason_code::server_shutting_down: return "server_shutting_down";
159  case disconnect_reason_code::keep_alive_timeout: return "keep_alive_timeout";
160  case disconnect_reason_code::session_taken_over: return "session_taken_over";
161  case disconnect_reason_code::topic_filter_invalid: return "topic_filter_invalid";
162  case disconnect_reason_code::topic_name_invalid: return "topic_name_invalid";
163  case disconnect_reason_code::receive_maximum_exceeded: return "receive_maximum_exceeded";
164  case disconnect_reason_code::topic_alias_invalid: return "topic_alias_invalid";
165  case disconnect_reason_code::packet_too_large: return "packet_too_large";
166  case disconnect_reason_code::message_rate_too_high: return "message_rate_too_high";
167  case disconnect_reason_code::quota_exceeded: return "quota_exceeded";
168  case disconnect_reason_code::administrative_action: return "administrative_action";
169  case disconnect_reason_code::payload_format_invalid: return "payload_format_invalid";
170  case disconnect_reason_code::retain_not_supported: return "retain_not_supported";
171  case disconnect_reason_code::qos_not_supported: return "qos_not_supported";
172  case disconnect_reason_code::use_another_server: return "use_another_server";
173  case disconnect_reason_code::server_moved: return "server_moved";
174  case disconnect_reason_code::shared_subscriptions_not_supported: return "shared_subscriptions_not_supported";
175  case disconnect_reason_code::connection_rate_exceeded: return "connection_rate_exceeded";
176  case disconnect_reason_code::maximum_connect_time: return "maximum_connect_time";
177  case disconnect_reason_code::subscription_identifiers_not_supported: return "subscription_identifiers_not_supported";
178  case disconnect_reason_code::wildcard_subscriptions_not_supported: return "wildcard_subscriptions_not_supported";
179  default: return "unknown_disconnect_reason_code";
180  }
181 }
182 
183 inline
184 std::ostream& operator<<(std::ostream& os, disconnect_reason_code val)
185 {
187  return os;
188 }
189 
190 
191 enum class suback_reason_code : std::uint8_t {
192  granted_qos_0 = 0x00,
193  granted_qos_1 = 0x01,
194  granted_qos_2 = 0x02,
195  unspecified_error = 0x80,
197  not_authorized = 0x87,
198  topic_filter_invalid = 0x8f,
200  quota_exceeded = 0x97,
204 };
205 
206 constexpr
208  switch(v)
209  {
210  case suback_reason_code::granted_qos_0: return "granted_qos_0";
211  case suback_reason_code::granted_qos_1: return "granted_qos_1";
212  case suback_reason_code::granted_qos_2: return "granted_qos_2";
213  case suback_reason_code::unspecified_error: return "unspecified_error";
214  case suback_reason_code::implementation_specific_error: return "implementation_specific_error";
215  case suback_reason_code::not_authorized: return "not_authorized";
216  case suback_reason_code::topic_filter_invalid: return "topic_filter_invalid";
217  case suback_reason_code::packet_identifier_in_use: return "packet_identifier_in_use";
218  case suback_reason_code::quota_exceeded: return "quota_exceeded";
219  case suback_reason_code::shared_subscriptions_not_supported: return "shared_subscriptions_not_supported";
220  case suback_reason_code::subscription_identifiers_not_supported: return "subscription_identifiers_not_supported";
221  case suback_reason_code::wildcard_subscriptions_not_supported: return "wildcard_subscriptions_not_supported";
222  default: return "unknown_suback_reason_code";
223  }
224 }
225 
226 inline
227 std::ostream& operator<<(std::ostream& os, suback_reason_code val)
228 {
229  os << suback_reason_code_to_str(val);
230  return os;
231 }
232 
234  return static_cast<suback_reason_code>(q);
235 }
236 
237 enum class unsuback_reason_code : std::uint8_t {
238  success = 0x00,
240  unspecified_error = 0x80,
242  not_authorized = 0x87,
243  topic_filter_invalid = 0x8f,
245 };
246 
247 constexpr
249  switch(v)
250  {
251  case unsuback_reason_code::success: return "success";
252  case unsuback_reason_code::no_subscription_existed: return "no_subscription_existed";
253  case unsuback_reason_code::unspecified_error: return "unspecified_error";
254  case unsuback_reason_code::implementation_specific_error: return "implementation_specific_error";
255  case unsuback_reason_code::not_authorized: return "not_authorized";
256  case unsuback_reason_code::topic_filter_invalid: return "topic_filter_invalid";
257  case unsuback_reason_code::packet_identifier_in_use: return "packet_identifier_in_use";
258  default: return "unknown_unsuback_reason_code";
259  }
260 }
261 
262 inline
263 std::ostream& operator<<(std::ostream& os, unsuback_reason_code val)
264 {
265  os << unsuback_reason_code_to_str(val);
266  return os;
267 }
268 
269 enum class puback_reason_code : std::uint8_t {
270  success = 0x00,
272  unspecified_error = 0x80,
274  not_authorized = 0x87,
275  topic_name_invalid = 0x90,
277  quota_exceeded = 0x97,
278  payload_format_invalid = 0x99,
279 };
280 
281 constexpr
283  switch(v)
284  {
285  case puback_reason_code::success: return "success";
286  case puback_reason_code::no_matching_subscribers: return "no_matching_subscribers";
287  case puback_reason_code::unspecified_error: return "unspecified_error";
288  case puback_reason_code::implementation_specific_error: return "implementation_specific_error";
289  case puback_reason_code::not_authorized: return "not_authorized";
290  case puback_reason_code::topic_name_invalid: return "topic_name_invalid";
291  case puback_reason_code::packet_identifier_in_use: return "packet_identifier_in_use";
292  case puback_reason_code::quota_exceeded: return "quota_exceeded";
293  case puback_reason_code::payload_format_invalid: return "payload_format_invalid";
294  default: return "unknown_puback_reason_code";
295  }
296 }
297 
298 inline
299 std::ostream& operator<<(std::ostream& os, puback_reason_code val)
300 {
301  os << puback_reason_code_to_str(val);
302  return os;
303 }
304 
305 enum class pubrec_reason_code : std::uint8_t {
306  success = 0x00,
308  unspecified_error = 0x80,
310  not_authorized = 0x87,
311  topic_name_invalid = 0x90,
313  quota_exceeded = 0x97,
314  payload_format_invalid = 0x99,
315 };
316 
317 constexpr
319  switch(v)
320  {
321  case pubrec_reason_code::success: return "success";
322  case pubrec_reason_code::no_matching_subscribers: return "no_matching_subscribers";
323  case pubrec_reason_code::unspecified_error: return "unspecified_error";
324  case pubrec_reason_code::implementation_specific_error: return "implementation_specific_error";
325  case pubrec_reason_code::not_authorized: return "not_authorized";
326  case pubrec_reason_code::topic_name_invalid: return "topic_name_invalid";
327  case pubrec_reason_code::packet_identifier_in_use: return "packet_identifier_in_use";
328  case pubrec_reason_code::quota_exceeded: return "quota_exceeded";
329  case pubrec_reason_code::payload_format_invalid: return "payload_format_invalid";
330  default: return "unknown_pubrec_reason_code";
331  }
332 }
333 
334 inline
335 std::ostream& operator<<(std::ostream& os, pubrec_reason_code val)
336 {
337  os << pubrec_reason_code_to_str(val);
338  return os;
339 }
340 
341 enum class pubrel_reason_code : std::uint8_t {
342  success = 0x00,
344 };
345 
346 constexpr
348  switch(v)
349  {
350  case pubrel_reason_code::success: return "success";
351  case pubrel_reason_code::packet_identifier_not_found: return "packet_identifier_not_found";
352  default: return "unknown_pubrel_reason_code";
353  }
354 }
355 
356 inline
357 std::ostream& operator<<(std::ostream& os, pubrel_reason_code val)
358 {
359  os << pubrel_reason_code_to_str(val);
360  return os;
361 }
362 
363 enum class pubcomp_reason_code : std::uint8_t {
364  success = 0x00,
366 };
367 
368 constexpr
370  switch(v)
371  {
372  case pubcomp_reason_code::success: return "success";
373  case pubcomp_reason_code::packet_identifier_not_found: return "packet_identifier_not_found";
374  default: return "unknown_pubcomp_reason_code";
375  }
376 }
377 
378 inline
379 std::ostream& operator<<(std::ostream& os, pubcomp_reason_code val)
380 {
381  os << pubcomp_reason_code_to_str(val);
382  return os;
383 }
384 
385 enum class auth_reason_code : std::uint8_t {
386  success = 0x00,
388  re_authenticate = 0x19,
389 };
390 
391 constexpr
393  switch(v)
394  {
395  case auth_reason_code::success: return "success";
396  case auth_reason_code::continue_authentication: return "continue_authentication";
397  case auth_reason_code::re_authenticate: return "re_authenticate";
398  default: return "unknown_auth_reason_code";
399  }
400 }
401 
402 inline
403 std::ostream& operator<<(std::ostream& os, auth_reason_code val)
404 {
405  os << auth_reason_code_to_str(val);
406  return os;
407 }
408 
409 } // v5
410 } // namespace MQTT_NS
411 
412 #endif // MQTT_REASON_CODE_HPP
connect_reason_code
Definition: reason_code.hpp:50
unsuback_reason_code
Definition: reason_code.hpp:237
constexpr char const * suback_reason_code_to_str(suback_reason_code v)
Definition: reason_code.hpp:207
auth_reason_code
Definition: reason_code.hpp:385
std::ostream & operator<<(std::ostream &os, connect_reason_code val)
Definition: reason_code.hpp:108
suback_reason_code
Definition: reason_code.hpp:191
constexpr char const * disconnect_reason_code_to_str(disconnect_reason_code v)
Definition: reason_code.hpp:147
pubrel_reason_code
Definition: reason_code.hpp:341
puback_reason_code
Definition: reason_code.hpp:269
pubrec_reason_code
Definition: reason_code.hpp:305
constexpr suback_reason_code qos_to_suback_reason_code(qos q)
Definition: reason_code.hpp:233
pubcomp_reason_code
Definition: reason_code.hpp:363
constexpr char const * puback_reason_code_to_str(puback_reason_code v)
Definition: reason_code.hpp:282
disconnect_reason_code
Definition: reason_code.hpp:114
constexpr char const * pubcomp_reason_code_to_str(pubcomp_reason_code v)
Definition: reason_code.hpp:369
constexpr char const * unsuback_reason_code_to_str(unsuback_reason_code v)
Definition: reason_code.hpp:248
constexpr char const * pubrec_reason_code_to_str(pubrec_reason_code v)
Definition: reason_code.hpp:318
constexpr char const * connect_reason_code_to_str(connect_reason_code v)
Definition: reason_code.hpp:77
constexpr char const * pubrel_reason_code_to_str(pubrel_reason_code v)
Definition: reason_code.hpp:347
constexpr char const * auth_reason_code_to_str(auth_reason_code v)
Definition: reason_code.hpp:392
Definition: any.hpp:27
suback_return_code
Definition: reason_code.hpp:18
constexpr suback_return_code qos_to_suback_return_code(qos q)
Definition: reason_code.hpp:44
constexpr char const * suback_return_code_to_str(suback_return_code v)
Definition: reason_code.hpp:26
std::ostream & operator<<(std::ostream &os, connect_return_code val)
Definition: connect_return_code.hpp:43
qos
Definition: subscribe_options.hpp:34
Definition: exception.hpp:21