mqtt_cpp
message_variant.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_MESSAGE_VARIANT_HPP)
8 #define MQTT_MESSAGE_VARIANT_HPP
9 
10 #include <mqtt/namespace.hpp>
11 #include <mqtt/message.hpp>
12 #include <mqtt/v5_message.hpp>
13 #include <mqtt/variant.hpp>
14 
15 namespace MQTT_NS {
16 
17 // message_variant
18 
19 template <std::size_t PacketIdBytes>
20 using basic_message_variant = variant<
50 >;
51 
53 
54 namespace detail {
55 
57  template <typename T>
58  std::vector<as::const_buffer> operator()(T&& t) const {
59  return t.const_buffer_sequence();
60  }
61 };
62 
63 struct size_visitor {
64  template <typename T>
65  std::size_t operator()(T&& t) const {
66  return t.size();
67  }
68 };
69 
71  template <typename T>
72  std::size_t operator()(T&& t) const {
73  return t.num_of_const_buffer_sequence();
74  }
75 };
76 
78  template <typename T>
79  std::string operator()(T&& t) const {
80  return std::forward<T>(t).continuous_buffer();
81  }
82 };
83 
84 } // namespace detail
85 
86 template <std::size_t PacketIdBytes>
87 inline std::vector<as::const_buffer> const_buffer_sequence(
90 }
91 
92 template <std::size_t PacketIdBytes>
93 inline std::size_t size(basic_message_variant<PacketIdBytes> const& mv) {
95 }
96 
97 template <std::size_t PacketIdBytes>
98 inline std::size_t num_of_const_buffer_sequence(
101 }
102 
103 template <std::size_t PacketIdBytes>
106 }
107 
108 
109 // store_message_variant
110 
111 template <std::size_t PacketIdBytes>
117 >;
118 
120 
121 namespace detail {
122 
123 template <std::size_t PacketIdBytes>
125  template <typename T>
127  return t;
128  }
129 };
130 
131 } // detail
132 
133 template <std::size_t PacketIdBytes>
134 inline
138 }
139 
140 template <std::size_t PacketIdBytes>
143 }
144 
145 } // namespace MQTT_NS
146 
147 #endif // MQTT_MESSAGE_VARIANT_HPP
Definition: message.hpp:505
Definition: message.hpp:912
Definition: message.hpp:782
Definition: message.hpp:1000
Definition: message.hpp:249
Definition: message.hpp:301
Definition: v5_message.hpp:544
Definition: v5_message.hpp:2134
Definition: v5_message.hpp:1952
Definition: v5_message.hpp:2447
Definition: v5_message.hpp:2277
Definition: v5_message.hpp:405
Definition: v5_message.hpp:102
Definition: any.hpp:27
constexpr decltype(auto) visit(Visitor &&vis, Variants &&... vars)
Definition: variant.hpp:60
variant< v3_1_1::basic_publish_message< PacketIdBytes >, v3_1_1::basic_pubrel_message< PacketIdBytes >, v5::basic_publish_message< PacketIdBytes >, v5::basic_pubrel_message< PacketIdBytes > > basic_store_message_variant
Definition: message_variant.hpp:117
basic_store_message_variant< 2 > store_message_variant
Definition: message_variant.hpp:119
std::size_t num_of_const_buffer_sequence(basic_message_variant< PacketIdBytes > const &mv)
Definition: message_variant.hpp:98
std::vector< as::const_buffer > const_buffer_sequence(basic_message_variant< PacketIdBytes > const &mv)
Definition: message_variant.hpp:87
std::string continuous_buffer(basic_message_variant< PacketIdBytes > const &mv)
Definition: message_variant.hpp:104
std::size_t size(basic_message_variant< PacketIdBytes > const &mv)
Definition: message_variant.hpp:93
basic_message_variant< PacketIdBytes > get_basic_message_variant(basic_store_message_variant< PacketIdBytes > smv)
Definition: message_variant.hpp:135
variant< v3_1_1::connect_message, v3_1_1::connack_message, v3_1_1::basic_publish_message< PacketIdBytes >, v3_1_1::basic_puback_message< PacketIdBytes >, v3_1_1::basic_pubrec_message< PacketIdBytes >, v3_1_1::basic_pubrel_message< PacketIdBytes >, v3_1_1::basic_pubcomp_message< PacketIdBytes >, v3_1_1::basic_subscribe_message< PacketIdBytes >, v3_1_1::basic_suback_message< PacketIdBytes >, v3_1_1::basic_unsubscribe_message< PacketIdBytes >, v3_1_1::basic_unsuback_message< PacketIdBytes >, v3_1_1::pingreq_message, v3_1_1::pingresp_message, v3_1_1::disconnect_message, v5::connect_message, v5::connack_message, v5::basic_publish_message< PacketIdBytes >, v5::basic_puback_message< PacketIdBytes >, v5::basic_pubrec_message< PacketIdBytes >, v5::basic_pubrel_message< PacketIdBytes >, v5::basic_pubcomp_message< PacketIdBytes >, v5::basic_subscribe_message< PacketIdBytes >, v5::basic_suback_message< PacketIdBytes >, v5::basic_unsubscribe_message< PacketIdBytes >, v5::basic_unsuback_message< PacketIdBytes >, v5::pingreq_message, v5::pingresp_message, v5::disconnect_message, v5::auth_message > basic_message_variant
Definition: message_variant.hpp:50
basic_message_variant< 2 > message_variant
Definition: message_variant.hpp:52
Definition: message_variant.hpp:124
basic_message_variant< PacketIdBytes > operator()(T const &t) const
Definition: message_variant.hpp:126
Definition: message_variant.hpp:56
std::vector< as::const_buffer > operator()(T &&t) const
Definition: message_variant.hpp:58
Definition: message_variant.hpp:77
std::string operator()(T &&t) const
Definition: message_variant.hpp:79
std::size_t operator()(T &&t) const
Definition: message_variant.hpp:72
Definition: message_variant.hpp:63
std::size_t operator()(T &&t) const
Definition: message_variant.hpp:65
Definition: message.hpp:169
Definition: message.hpp:214
Definition: message.hpp:179
Definition: message.hpp:189
Definition: message.hpp:223
Definition: message.hpp:243
Definition: message.hpp:231
Definition: message.hpp:237
Definition: v5_message.hpp:2765
Definition: v5_message.hpp:1013
Definition: v5_message.hpp:1746
Definition: v5_message.hpp:1217
Definition: v5_message.hpp:1422
Definition: v5_message.hpp:2597
Definition: v5_message.hpp:2585
Definition: v5_message.hpp:2591