CARLA
 
载入中...
搜索中...
未找到
incomingMessage.h
浏览该文件的文档.
1// Copyright (c) 2022 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#include "carla/BufferPool.h"
8#include "carla/Debug.h"
9#include "carla/Exception.h"
10#include "carla/Logging.h"
12#include "carla/Time.h"
13
14#include <exception>
15
16namespace carla {
17namespace multigpu {
18
19 /// 这个类是一个辅助类,用于读取传入的TCP消息
21 public:
22 /// 构造函数,接收一个Buffer对象并将其移动赋值给内部_buffer。
23 /// 这个构造函数用于初始化IncomingMessage对象,接收一个已经分配好的缓冲区。
24 explicit IncomingMessage(Buffer &&buffer) : _buffer(std::move(buffer)) {}
25 /// 返回一个boost::asio::mutable_buffer,指向消息大小的存储位置。
26 /// 这个函数用于在接收消息时,首先读取消息的大小(长度)。
27 boost::asio::mutable_buffer size_as_buffer() {
28 return boost::asio::buffer(&_size, sizeof(_size));
29 }
30 /// 返回一个boost::asio::mutable_buffer,指向消息数据的存储位置。
31 /// 在调用这个函数之前,必须确保_size已经被正确设置(即先调用了size_as_buffer()并读取了消息大小)。
32 /// 此函数重置_buffer的大小以匹配消息的实际大小,并返回指向该缓冲区的引用。
33 boost::asio::mutable_buffer buffer() {
34 DEBUG_ASSERT(_size > 0u); // 确保消息大小大于0
35 _buffer.reset(_size); // 根据消息大小重置缓冲区
36 return _buffer.buffer(); // 返回缓冲区的引用
37 }
38 /// 返回消息的大小(长度)。
39 /// 这个函数返回的是从TCP连接中读取的消息大小(字节数)。
40 auto size() const {
41 return _size;
42 }
43 /// 弹出(移动)当前消息使用的Buffer对象。
44 /// 这个函数将内部的_buffer对象以移动语义的方式返回,允许调用者接管该缓冲区的所有权。
45 /// 调用此函数后,IncomingMessage对象不再拥有该缓冲区。
46 auto pop() {
47 return std::move(_buffer);
48 }
49
50 private:
51 /// 存储消息的大小(字节数)。
52 /// 这个变量用于存储从TCP连接中读取的消息大小
54 /// 存储消息数据的缓冲区。
55 /// 这个Buffer对象用于存储实际的消息数据。
57 };
58
59
60} // namespace multigpu
61} // namespace carla
#define DEBUG_ASSERT(predicate)
Definition Debug.h:68
包含与Carla流处理相关的底层细节的头文件。
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
void reset(size_type size)
重置缓冲区的大小。如果容量不足,当前内存将被丢弃,并分配一个新的大小为 size的内存块。 allocated.
boost::asio::const_buffer buffer() const noexcept
从这个缓冲区创建一个boost::asio::buffer。
这个类是一个辅助类,用于读取传入的TCP消息
IncomingMessage(Buffer &&buffer)
构造函数,接收一个Buffer对象并将其移动赋值给内部_buffer。 这个构造函数用于初始化IncomingMessage对象,接收一个已经分配好的缓冲区。
auto pop()
弹出(移动)当前消息使用的Buffer对象。
boost::asio::mutable_buffer buffer()
返回一个boost::asio::mutable_buffer,指向消息数据的存储位置。
Buffer _buffer
存储消息数据的缓冲区。 这个Buffer对象用于存储实际的消息数据。
carla::streaming::detail::message_size_type _size
存储消息的大小(字节数)。
boost::asio::mutable_buffer size_as_buffer()
返回一个boost::asio::mutable_buffer,指向消息大小的存储位置。 这个函数用于在接收消息时,首先读取消息的大小(长度)。
auto size() const
返回消息的大小(长度)。
uint32_t message_size_type
消息大小的类型定义。
Definition Types.h:40
CARLA模拟器的主命名空间。
Definition Carla.cpp:139