CARLA
 
载入中...
搜索中...
未找到
secondaryCommands.cpp
浏览该文件的文档.
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/Logging.h"
9// #include "carla/streaming/detail/tcp/Message.h"
10
11namespace carla {
12namespace multigpu {
13
14// 设置SecondaryCommands实例中的_secondary成员变量
15// 参数:secondary - 一个指向Secondary类实例的智能指针
16void SecondaryCommands::set_secondary(std::shared_ptr<Secondary> secondary) {
17 _secondary = secondary; // 将传入的智能指针赋值给_secondary成员变量
18}
19
20// 设置一个回调函数,当处理命令时会被调用
21// 参数:callback - 一个函数指针或可调用对象,接受命令ID和Buffer作为参数
23 _callback = callback; // 将传入的回调函数赋值给_callback成员变量
24 // 注意:callback_type是一个未在代码段中定义的类型,它可能是一个函数指针类型或std::function等
25}
26
27// 处理一个命令,从Buffer中提取命令头,然后调用设置的回调函数
28// 参数:buffer - 包含命令数据的Buffer对象
30 // 从Buffer中提取命令头
31 // 假设CommandHeader是一个结构体,包含了命令的ID和大小等信息
32 CommandHeader *header;
33 header = reinterpret_cast<CommandHeader *>(buffer.data()); // 将Buffer的数据指针转换为CommandHeader指针
34
35 // 创建一个新的Buffer对象,用于存储命令数据(不包括命令头)
36 // 如果header->size确实包含了命令头的大小,那么下面的代码将正确地跳过命令头
37 Buffer data(buffer.data() + sizeof(CommandHeader), header->size);
38
39 // 调用之前设置的回调函数,传递命令ID和命令数据
40 _callback(header->id, std::move(data)); // 使用std::move是为了避免不必要的拷贝
41
42 // 下面的日志语句被注释掉了,如果取消注释,它将输出一条日志信息
43 // log_info("Secondary got a command to process"); // 假设log_info是一个用于输出日志信息的函数
44}
45// 这些类型和类可能是在其他地方定义的,用于支持SecondaryCommands类的功能
46
47
48}
49} // 命名空间结束
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
const value_type * data() const noexcept
直接访问分配的内存,如果没有分配内存则返回 nullptr。
std::function< void(MultiGPUCommand, carla::Buffer)> callback_type
void set_secondary(std::shared_ptr< Secondary > secondary)
std::shared_ptr< Secondary > _secondary
void set_callback(callback_type callback)
void process_command(carla::Buffer buffer)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139