CARLA
 
载入中...
搜索中...
未找到
Token.cpp
浏览该文件的文档.
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
8
9#include "carla/Exception.h"
10
11#include <cstring> // 包含memcpy函数的头文件
12#include <exception> // 包含异常处理相关的头文件
13
14namespace carla {
15namespace streaming {
16namespace detail {
17
18// token_type类的成员函数,用于设置token中的IP地址
19 void token_type::set_address(const boost::asio::ip::address &addr) {
20 // 首先检查传入的地址是否是IPv4地址。
21 if (addr.is_v4()) {
22 // 如果是IPv4地址,则将token中的地址类型设置为IPv4。
24 // 并将IPv4地址转换为字节数组后存储到token的相应位置。
25 _token.address.v4 = addr.to_v4().to_bytes();
26 // 否则,检查传入的地址是否是IPv6地址。
27 } else if (addr.is_v6()) {
28 // 检查传入的地址是否是IPv6地址
29 // 如果是IPv6地址,则将token中的地址类型设置为IPv6。
31 // 并将IPv6地址转换为字节数组后存储到token的相应位置。
32 _token.address.v6 = addr.to_v6().to_bytes();
33 // 如果传入的地址既不是IPv4也不是IPv6,则抛出异常。
34 } else {
35 // 抛出一个std::invalid_argument异常,异常信息为"invalid ip address!",表示传入了无效的IP地址。
36 throw_exception(std::invalid_argument("invalid ip address!"));
37 }
38 }
39// 拷贝构造函数,用于通过另一个Token对象来初始化token_type对象
41 // 使用std::memcpy将rhs中的数据复制到当前对象的_token成员中
42 // 假设_token是一个结构体或类,且rhs.data[0u]开始的数据与之兼容
43 std::memcpy(&_token, &rhs.data[0u], sizeof(_token));
44 }
45// 类型转换运算符,允许token_type对象被隐式转换为Token类型
46 token_type::operator Token() const {
47 Token token;// 创建一个临时的Token对象
48 // 使用std::memcpy将_token成员的数据复制到token.data的开始位置
49 // 注意:这里假设token.data的大小足够容纳_token的数据
50 std::memcpy(&token.data[0u], &_token, token.data.size());
51 return token;
52 }
53 // token_type类的成员函数,用于获取token中存储的IP地址
54 boost::asio::ip::address token_type::get_address() const {
55 // 根据token中存储的地址类型,返回相应的IPv4或IPv6地址
57 return boost::asio::ip::address_v4(_token.address.v4);
58 }
59 return boost::asio::ip::address_v6(_token.address.v6);
60 }
61
62} // namespace detail
63} // namespace streaming
64} // namespace carla
std::array< unsigned char, 24u > data
Definition Token.h:20
boost::asio::ip::address get_address() const
获取地址。
Definition Token.cpp:54
token_type()=default
默认构造函数,用于创建未初始化的token_type对象。
void set_address(const boost::asio::ip::address &addr)
设置地址。
Definition Token.cpp:19
token_data _token
存储令牌数据的成员变量。
包含CARLA流处理相关头文件和Boost.Asio网络库头文件。 包含CARLA的调试功能相关定义。 包含CARLA流处理的端点(EndPoint)类定义。 包含CARLA流处理的令牌(Token)类...
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
void throw_exception(const std::exception &e)
Definition Carla.cpp:142
enum carla::streaming::detail::token_data::address address_type
address
地址类型枚举,指示IP地址的版本。