async_mqtt 9.0.1
Loading...
Searching...
No Matches
packet_iterator.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_PACKET_ITERATOR_HPP)
8#define ASYNC_MQTT_PACKET_PACKET_ITERATOR_HPP
9
10#include <vector>
11#include <tuple>
12#include <string>
13
14#include <boost/asio/buffer.hpp>
15#include <boost/asio/buffers_iterator.hpp>
16
17#include <async_mqtt/util/buffer.hpp>
18
19namespace async_mqtt {
20
21namespace as = boost::asio;
22
32template <template <typename...> typename Container, typename Buffer>
33using packet_iterator = as::buffers_iterator<Container<Buffer>>;
34
46template <template <typename...> typename Container, typename Buffer>
47std::pair<packet_iterator<Container, Buffer>, packet_iterator<Container, Buffer>>
48make_packet_range(Container<Buffer> const& cbs) {
49 return {
52 };
53}
54
66template <template <typename...> typename Container, typename Buffer>
67std::string
68to_string(Container<Buffer> const& cbs) {
69 auto [b, e] = make_packet_range(cbs);
70 return std::string(b, e);
71}
72
73} // namespace async_mqtt
74
75#endif // ASYNC_MQTT_PACKET_PACKET_ITERATOR_HPP
std::pair< packet_iterator< Container, Buffer >, packet_iterator< Container, Buffer > > make_packet_range(Container< Buffer > const &cbs)
create packet iterator range
Definition packet_iterator.hpp:48
as::buffers_iterator< Container< Buffer > > packet_iterator
iterator type of buffer sequence
Definition packet_iterator.hpp:33
std::string to_string(Container< Buffer > const &cbs)
convert buffer sequence to the string
Definition packet_iterator.hpp:68