async_mqtt 9.0.1
Loading...
Searching...
No Matches
v3_1_1_suback.hpp
1// Copyright Takatoshi Kondo 2022
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(ASYNC_MQTT_PACKET_V3_1_1_SUBACK_HPP)
8#define ASYNC_MQTT_PACKET_V3_1_1_SUBACK_HPP
9
10#include <async_mqtt/buffer_to_packet_variant.hpp>
11#include <async_mqtt/error.hpp>
12
13#include <async_mqtt/packet/control_packet_type.hpp>
14#include <async_mqtt/packet/topic_subopts.hpp>
15#include <async_mqtt/packet/packet_id_type.hpp>
16
17#include <async_mqtt/util/buffer.hpp>
18#include <async_mqtt/util/static_vector.hpp>
19
20
31namespace async_mqtt::v3_1_1 {
32
33namespace as = boost::asio;
34
52template <std::size_t PacketIdBytes>
54public:
55
63 std::vector<suback_return_code> params
64 );
65
70 static constexpr control_packet_type type() {
72 }
73
79 std::vector<as::const_buffer> const_buffer_sequence() const;
80
85 std::size_t size() const;
86
91 static constexpr std::size_t num_of_const_buffer_sequence() {
92 return
93 1 + // fixed header
94 1 + // remaining length
95 1 + // packet id
96 1; // suback_return_code vector
97 }
98
104
109 std::vector<suback_return_code> const& entries() const;
110
111private:
112
113 template <std::size_t PacketIdBytesArg>
116
117#if defined(ASYNC_MQTT_UNIT_TEST_FOR_PACKET)
118 friend struct ::ut_packet::v311_suback;
119 friend struct ::ut_packet::v311_suback_pid4;
120 friend struct ::ut_packet::v311_suback_error;
121#endif // defined(ASYNC_MQTT_UNIT_TEST_FOR_PACKET)
122
123 // private constructor for internal use
124 explicit basic_suback_packet(buffer buf, error_code& ec);
125
126private:
127 std::uint8_t fixed_header_;
128 std::vector<suback_return_code> entries_;
129 static_vector<char, PacketIdBytes> packet_id_ = static_vector<char, PacketIdBytes>(PacketIdBytes);
130 std::size_t remaining_length_;
131 static_vector<char, 4> remaining_length_buf_;
132};
133
146template <std::size_t PacketIdBytes>
148
161template <std::size_t PacketIdBytes>
163
176template <std::size_t PacketIdBytes>
177std::ostream& operator<<(std::ostream& o, basic_suback_packet<PacketIdBytes> const& v);
178
190
191} // namespace async_mqtt::v3_1_1
192
193#if !defined(ASYNC_MQTT_SEPARATE_COMPILATION)
194#include <async_mqtt/packet/impl/v3_1_1_suback.ipp>
195#endif // !defined(ASYNC_MQTT_SEPARATE_COMPILATION)
196
197#endif // ASYNC_MQTT_PACKET_V3_1_1_SUBACK_HPP
The varaint type of all packets and system_error.
Definition packet_variant_fwd.hpp:37
buffer that has string_view interface and shared ownership This class is only for advanced usecase su...
Definition buffer.hpp:46
MQTT SUBACK packet (v3.1.1)
Definition v3_1_1_suback.hpp:53
bool operator<(basic_suback_packet< PacketIdBytes > const &lhs, basic_suback_packet< PacketIdBytes > const &rhs)
less than operator
std::vector< as::const_buffer > const_buffer_sequence() const
Create const buffer sequence it is for boost asio APIs.
bool operator==(basic_suback_packet< PacketIdBytes > const &lhs, basic_suback_packet< PacketIdBytes > const &rhs)
equal operator
std::vector< suback_return_code > const & entries() const
Get entries.
std::size_t size() const
Get packet size.
std::ostream & operator<<(std::ostream &o, basic_suback_packet< PacketIdBytes > const &v)
stream output operator
basic_packet_id_type< PacketIdBytes >::type packet_id() const
Get packet_id.
static constexpr control_packet_type type()
Get MQTT control packet type.
Definition v3_1_1_suback.hpp:70
static constexpr std::size_t num_of_const_buffer_sequence()
Get number of element of const_buffer_sequence.
Definition v3_1_1_suback.hpp:91
basic_suback_packet(typename basic_packet_id_type< PacketIdBytes >::type packet_id, std::vector< suback_return_code > params)
constructor
sys::error_code error_code
sys is a namespace alias of boost::sytem.
Definition error.hpp:56
protocol_version
MQTT protocol version.
Definition protocol_version.hpp:29
basic_packet_variant< PacketIdBytes > buffer_to_basic_packet_variant(buffer buf, protocol_version ver, error_code &ec)
create basic_packet_variant from the buffer
control_packet_type
MQTT control packet type.
Definition control_packet_type.hpp:26
packet idenfitifer type class template
Definition packet_id_type.hpp:25