CARLA
 
载入中...
搜索中...
未找到
V2XSerializer.h
浏览该文件的文档.
1// Copyright (c) 2024 Institut fuer Technik der Informationsverarbeitung (ITIV) at the
2// Karlsruhe Institute of Technology
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
9#include "carla/Memory.h"
12
13#include <cstdint>
14#include <cstring>
15class CAMContainer;// 前向声明一个名为CAMContainer的类,告知编译器后续会有这个类的完整定义,在这里先允许使用该类的指针或引用类型
16
17namespace carla
18{
19 namespace sensor
20 {
21
22 class SensorData;
23// 前向声明一个名为SensorData的类,同样是先告知编译器有这个类存在,后续会有完整定义,方便在这里使用其指针等相关类型
24 namespace s11n
25 {
26
27 // ===========================================================================
28 // -- V2XSerializer --------------------------------------------------------
29 // ===========================================================================
30
31 /// Serializes the data generated by V2X sensors.
32 // CAM
34 {
35 public:
36 template <typename Sensor>
37 static Buffer Serialize(
38 const Sensor &sensor,
39 const data::CAMDataS &data,
40 Buffer &&output); // 定义一个静态模板函数Serialize,用于将特定传感器(由模板参数Sensor指定类型)产生的
41// CAMDataS类型的数据进行序列化操作,参数sensor是传感器对象引用,data是要序列化的数据, output是用于存放序列化结果的缓冲区,函数返回序列化后的缓冲区(通过移动语义返回)
42
44 };
45 // 定义一个静态函数Deserialize,用于将传入的原始数据(RawData类型,通过右值引用接收,避免不必要的拷贝)
46// 反序列化为SensorData类型的智能指针(SharedPtr表示共享所有权的智能指针)
47
48 template <typename Sensor>
50 const Sensor &,
51 const data::CAMDataS &data,
52 Buffer &&output)
53 {
54 output.copy_from(data.MessageList);
55// 将data中的MessageList数据复制到output缓冲区中,实现序列化的具体操作,即将相关数据填充到缓冲区
56 return std::move(output); // 通过移动语义返回填充好数据的缓冲区,避免不必要的拷贝开销
57 }
58
59 // Custom message
61 {
62 public:
63 template <typename Sensor>
64 static Buffer Serialize(
65 const Sensor &sensor,
66 const data::CustomV2XDataS &data,
67 Buffer &&output);// 定义一个静态模板函数Serialize,用于将特定传感器(由模板参数Sensor指定类型)产生的
68 // CustomV2XDataS类型的数据进行序列化操作,参数含义与上面CAMDataSerializer中的Serialize类似
69
71 }; // 定义一个静态函数Deserialize,用于将传入的对应原始数据反序列化为SensorData类型的智能指针
72
73
74
75 template <typename Sensor>
77 const Sensor &,
78 const data::CustomV2XDataS &data,
79 Buffer &&output)
80 {
81 output.copy_from(data.MessageList); // 将data中的MessageList数据复制到output缓冲区中,实现CustomV2XDataS数据序列化的具体操作
82 return std::move(output); // 通过移动语义返回填充好数据的缓冲区,避免拷贝开销
83 }
84
85 } // namespace s11n
86 } // namespace sensor
87} // namespace carla
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
void copy_from(const T &source)
将 source复制到此缓冲区。如果需要,则分配内存。
包装一个传感器生成的原始数据以及一些有用的元信息。
Definition RawData.h:20
std::vector< CAMData > MessageList
Definition V2XData.h:67
std::vector< CustomV2XData > MessageList
Definition V2XData.h:99
Serializes the data generated by V2X sensors.
static Buffer Serialize(const Sensor &sensor, const data::CAMDataS &data, Buffer &&output)
static SharedPtr< SensorData > Deserialize(RawData &&data)
static Buffer Serialize(const Sensor &sensor, const data::CustomV2XDataS &data, Buffer &&output)
static SharedPtr< SensorData > Deserialize(RawData &&data)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19