20#include <boost/asio/buffer.hpp>
37 template <
size_t MaxNumberOfBuffers>
39 :
public std::enable_shared_from_this<MessageTmpl<MaxNumberOfBuffers>>,
46 return MaxNumberOfBuffers;
61 template <
typename... Buffers>
81 template <
typename... Buffers>
83 :
MessageTmpl(sizeof...(Buffers) + 1u, buf, buffers...) {
84 static_assert(
sizeof...(Buffers) <
max_size(),
"Too many buffers!");
92 auto size() const noexcept {
117 std::array<SharedBufferView, MaxNumberOfBuffers>
_buffers;
120 std::array<boost::asio::const_buffer, MaxNumberOfBuffers + 1u>
_buffer_views;
auto begin() const noexcept
名称范围迭代支持
通过TCP套接字发送的一组缓冲区的序列化,作为单个消息发送。
MessageTmpl(size_t size, SharedBufferView buffer, Buffers... buffers)
模板化的构造函数,用于初始化消息对象。
std::array< SharedBufferView, MaxNumberOfBuffers > _buffers
存储所有传入的缓冲区对象的数组。
auto size() const noexcept
获取消息的大小(不包括头部。
static constexpr size_t max_size()
获取单个消息中可以包含的缓冲区的最大数量。
auto GetBufferSequence() const
获取消息的缓冲区序列。
MessageTmpl(SharedBufferView buf, Buffers... buffers)
模板化的构造函数,用于创建包含多个缓冲区的消息对象。
MessageTmpl(size_t)
私有构造函数,用于限制外部直接创建对象。
message_size_type _number_of_buffers
缓冲区数量(不包括_total_size的缓冲区)。
std::array< boost::asio::const_buffer, MaxNumberOfBuffers+1u > _buffer_views
存储所有缓冲区视图的数组,包括_total_size的缓冲区视图。 注意,数组大小比_buffers多一个,以容纳_total_size的缓冲区视图。
message_size_type _total_size
消息的总大小(以字节为单位,不包括头部)。
bool empty() const noexcept
检查消息是否为空。
uint32_t message_size_type
消息大小的类型定义。
static auto MakeListView(Iterator begin, Iterator end)
std::shared_ptr< BufferView > SharedBufferView