CARLA
 
载入中...
搜索中...
未找到
MsgPack.h
浏览该文件的文档.
1// Copyright (c) 2017 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#pragma once
8#include "carla/Buffer.h" // 引入 Buffer 头文件,Buffer 类用于处理数据缓冲区
9#include <rpc/msgpack.hpp> // 引入 MessagePack 库头文件
10
11namespace carla {
12
13 class MsgPack {
14 public:
15
16 // 模板方法,将对象 obj 序列化为 Buffer
17 template <typename T>
18 static Buffer Pack(const T &obj) {
19 namespace mp = ::clmdep_msgpack; // 使用自定义命名空间 clmdep_msgpack
20 mp::sbuffer sbuf; // 创建一个 MessagePack 的缓冲区对象 sbuf
21 mp::pack(sbuf, obj); // 使用 MessagePack 的 pack 方法将对象 obj 序列化到 sbuf 中
22 // 构造 Buffer 对象,将 sbuf 的数据和大小传递给 Buffer
23 return Buffer(reinterpret_cast<const unsigned char *>(sbuf.data()), sbuf.size());
24 }
25
26 // 模板方法,将 Buffer 反序列化为对象 T
27 template <typename T>
28 static T UnPack(const Buffer &buffer) {
29 namespace mp = ::clmdep_msgpack; // 使用自定义命名空间 clmdep_msgpack
30 // 使用 MessagePack 的 unpack 方法将 Buffer 中的数据反序列化为对象 T
31 // reinterpret_cast 用于将 unsigned char* 类型的 data 转换为 char* 类型
32 return mp::unpack(reinterpret_cast<const char *>(buffer.data()), buffer.size()).template as<T>();
33 }
34
35 // 模板方法,将原始数据反序列化为对象 T
36 template <typename T>
37 static T UnPack(const unsigned char *data, size_t size) {
38 namespace mp = ::clmdep_msgpack; // 使用自定义命名空间 clmdep_msgpack
39 // 使用 MessagePack 的 unpack 方法将原始数据反序列化为对象 T
40 // reinterpret_cast 用于将 unsigned char* 类型的 data 转换为 char* 类型
41 return mp::unpack(reinterpret_cast<const char *>(data), size).template as<T>();
42 }
43 };
44
45} // namespace carla
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
const value_type * data() const noexcept
直接访问分配的内存,如果没有分配内存则返回 nullptr。
size_type size() const noexcept
static T UnPack(const Buffer &buffer)
Definition MsgPack.h:28
static T UnPack(const unsigned char *data, size_t size)
Definition MsgPack.h:37
static Buffer Pack(const T &obj)
Definition MsgPack.h:18
CARLA模拟器的主命名空间。
Definition Carla.cpp:139