通过TCP套接字发送的一组缓冲区的序列化,作为单个消息发送。 更多...
#include <Message.h>
Public 成员函数 | |
bool | empty () const noexcept |
检查消息是否为空。 | |
auto | GetBufferSequence () const |
获取消息的缓冲区序列。 | |
template<typename... Buffers> | |
MessageTmpl (SharedBufferView buf, Buffers... buffers) | |
模板化的构造函数,用于创建包含多个缓冲区的消息对象。 | |
auto | size () const noexcept |
获取消息的大小(不包括头部。 | |
静态 Public 成员函数 | |
static constexpr size_t | max_size () |
获取单个消息中可以包含的缓冲区的最大数量。 | |
Private 成员函数 | |
template<typename... Buffers> | |
MessageTmpl (size_t size, SharedBufferView buffer, Buffers... buffers) | |
模板化的构造函数,用于初始化消息对象。 | |
MessageTmpl (size_t) | |
私有构造函数,用于限制外部直接创建对象。 | |
![]() | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable (NonCopyable &&)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable & | operator= (NonCopyable &&)=delete |
Private 属性 | |
std::array< boost::asio::const_buffer, MaxNumberOfBuffers+1u > | _buffer_views |
存储所有缓冲区视图的数组,包括_total_size的缓冲区视图。 注意,数组大小比_buffers多一个,以容纳_total_size的缓冲区视图。 | |
std::array< SharedBufferView, MaxNumberOfBuffers > | _buffers |
存储所有传入的缓冲区对象的数组。 | |
message_size_type | _number_of_buffers = 0u |
缓冲区数量(不包括_total_size的缓冲区)。 | |
message_size_type | _total_size = 0u |
消息的总大小(以字节为单位,不包括头部)。 | |
通过TCP套接字发送的一组缓冲区的序列化,作为单个消息发送。
模板参数MaxNumberOfBuffers在编译时限制单个消息中可以包含的缓冲区的最大数量。
MaxNumberOfBuffers | 单个消息中可以包含的缓冲区的最大数量(编译时常量)。 |
|
inlineprivate |
|
inlineprivate |
模板化的构造函数,用于初始化消息对象。
size | 缓冲区总数(包括传入的和后续参数中的)。 |
buffer | 第一个缓冲区(类型为SharedBufferView)。 |
buffers | 可变数量的其他缓冲区。 |
引用了 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_buffer_views, carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_buffers, carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_number_of_buffers, carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_total_size , 以及 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::size().
|
inline |
模板化的构造函数,用于创建包含多个缓冲区的消息对象。
buf | 第一个缓冲区(类型为SharedBufferView)。 |
buffers | 可变数量的其他缓冲区。 |
sizeof...(Buffers)
来获取传入的缓冲区数量,并加1以包括第一个缓冲区。 在构造之前,会进行静态断言以确保传入的缓冲区数量不超过最大允许值。编译时断言失败,如果传入的缓冲区数量超过`max_size()`返回的值。 |
引用了 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_buffer_views, carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_total_size , 以及 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::max_size().
|
inlinenoexcept |
检查消息是否为空。
引用了 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::size().
|
inline |
获取消息的缓冲区序列。
std::vector<boost::asio::const_buffer>
或类似类型,具体取决于MakeListView
的实现)。 注意,返回的视图包括_total_size的缓冲区视图以及所有传入的缓冲区视图。 引用了 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_buffer_views, carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_number_of_buffers, begin() , 以及 carla::MakeListView().
|
inlinestaticconstexpr |
获取单个消息中可以包含的缓冲区的最大数量。
被这些函数引用 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl().
|
inlinenoexcept |
获取消息的大小(不包括头部。
引用了 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::_total_size.
被这些函数引用 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::empty() , 以及 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl().
|
private |
存储所有缓冲区视图的数组,包括_total_size的缓冲区视图。 注意,数组大小比_buffers多一个,以容纳_total_size的缓冲区视图。
被这些函数引用 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::GetBufferSequence(), carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl() , 以及 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl().
|
private |
存储所有传入的缓冲区对象的数组。
被这些函数引用 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl().
|
private |
缓冲区数量(不包括_total_size的缓冲区)。
被这些函数引用 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::GetBufferSequence() , 以及 carla::streaming::detail::tcp::MessageTmpl< MaxNumberOfBuffers >::MessageTmpl().
|
private |