CARLA
 
载入中...
搜索中...
未找到
Public 类型 | Public 成员函数 | Private 成员函数 | Private 属性 | 所有成员列表
carla::streaming::detail::tcp::Client类 参考

连接单个流的客户端。 更多...

#include <Client.h>

+ 类 carla::streaming::detail::tcp::Client 继承关系图:
+ carla::streaming::detail::tcp::Client 的协作图:

Public 类型

using callback_function_type = std::function<void (Buffer)>
 回调函数类型,接收一个Buffer作为参数。
 
using endpoint = boost::asio::ip::tcp::endpoint
 TCP端点类型,用于表示TCP连接的一端。
 
using protocol_type = endpoint::protocol_type
 协议类型,表示TCP协议。
 

Public 成员函数

 Client (boost::asio::io_context &io_context, const token_type &token, callback_function_type callback)
 构造函数。
 
void Connect ()
 连接到指定的流。
 
stream_id_type GetStreamId () const
 获取流的ID。
 
void Stop ()
 停止客户端。
 
 ~Client ()
 析构函数。
 

Private 成员函数

void ReadData ()
 从流中读取数据。
 
void Reconnect ()
 重新连接流。
 
- Private 成员函数 继承自 carla::profiler::LifetimeProfiled
 LifetimeProfiled ()=default
 
- Private 成员函数 继承自 carla::NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
NonCopyableoperator= (NonCopyable &&)=delete
 

Private 属性

std::shared_ptr< BufferPool_buffer_pool
 指向缓冲区池的共享指针。
 
callback_function_type _callback
 回调函数类型,用于处理读取的数据。
 
boost::asio::deadline_timer _connection_timer
 连接超时定时器。
 
std::atomic_bool _done {false}
 表示客户端是否已完成工作的原子布尔值。
 
boost::asio::ip::tcp::socket _socket
 TCP套接字,用于与流建立连接。
 
boost::asio::io_context::strand _strand
 序列化对套接字的访问。
 
const token_type _token
 存储流的唯一标识令牌。
 

详细描述

连接单个流的客户端。

警告
在释放共享指针之前,应该先停止这个客户端,否则它将不会被销毁。

在文件 streaming/detail/tcp/Client.h37 行定义.

成员类型定义说明

◆ callback_function_type

回调函数类型,接收一个Buffer作为参数。

在文件 streaming/detail/tcp/Client.h50 行定义.

◆ endpoint

carla::streaming::detail::tcp::Client::endpoint = boost::asio::ip::tcp::endpoint

TCP端点类型,用于表示TCP连接的一端。

在文件 streaming/detail/tcp/Client.h44 行定义.

◆ protocol_type

协议类型,表示TCP协议。

在文件 streaming/detail/tcp/Client.h47 行定义.

构造及析构函数说明

◆ Client()

carla::streaming::detail::tcp::Client::Client ( boost::asio::io_context & io_context,
const token_type & token,
callback_function_type callback )

构造函数。

参数
io_context引用boost::asio的I/O上下文对象,用于异步操作。
token流的令牌,包含流的唯一标识等信息。
callback回调函数,当接收到数据时调用。

在文件 streaming/detail/tcp/Client.cpp73 行定义.

引用了 _token, carla::streaming::detail::token_type::protocol_is_tcp() , 以及 carla::throw_exception().

+ 函数调用图:

◆ ~Client()

carla::streaming::detail::tcp::Client::~Client ( )
default

析构函数。

成员函数说明

◆ Connect()

void carla::streaming::detail::tcp::Client::Connect ( )

连接到指定的流。

在文件 streaming/detail/tcp/Client.cpp94 行定义.

引用了 _done, _socket, _strand, _token, Connect(), DEBUG_ASSERT, DEBUG_ASSERT_EQ, DEBUG_ONLY, carla::streaming::detail::token_type::get_stream_id(), carla::streaming::detail::token_type::is_valid(), carla::log_debug(), carla::log_info(), carla::streaming::detail::token_type::protocol_is_tcp(), ReadData(), Reconnect() , 以及 carla::streaming::detail::token_type::to_tcp_endpoint().

被这些函数引用 Connect(), ReadData() , 以及 Reconnect().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ GetStreamId()

stream_id_type carla::streaming::detail::tcp::Client::GetStreamId ( ) const
inline

获取流的ID。

返回
流的ID。

在文件 streaming/detail/tcp/Client.h67 行定义.

引用了 _token , 以及 carla::streaming::detail::token_type::get_stream_id().

+ 函数调用图:

◆ ReadData()

void carla::streaming::detail::tcp::Client::ReadData ( )
private

从流中读取数据。

此方法从已连接的流中读取数据,并处理这些数据。

在文件 streaming/detail/tcp/Client.cpp181 行定义.

引用了 _buffer_pool, _done, _socket, _strand, Connect(), DEBUG_ASSERT_EQ, DEBUG_ASSERT_NE, DEBUG_ONLY, carla::log_debug() , 以及 ReadData().

被这些函数引用 Connect() , 以及 ReadData().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ Reconnect()

void carla::streaming::detail::tcp::Client::Reconnect ( )
private

重新连接流。

此方法尝试重新建立与流的连接。

在文件 streaming/detail/tcp/Client.cpp169 行定义.

引用了 _connection_timer, Connect() , 以及 carla::time_duration::seconds().

被这些函数引用 Connect().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ Stop()

void carla::streaming::detail::tcp::Client::Stop ( )

停止客户端。

在文件 streaming/detail/tcp/Client.cpp158 行定义.

引用了 _connection_timer, _done , 以及 _socket.

类成员变量说明

◆ _buffer_pool

std::shared_ptr<BufferPool> carla::streaming::detail::tcp::Client::_buffer_pool
private

指向缓冲区池的共享指针。

这是一个指向BufferPool对象的共享指针,用于管理内存缓冲区。

在文件 streaming/detail/tcp/Client.h105 行定义.

被这些函数引用 ReadData().

◆ _callback

callback_function_type carla::streaming::detail::tcp::Client::_callback
private

回调函数类型,用于处理读取的数据。

当从流中读取到数据时,将调用此回调函数,并将读取到的数据作为参数传递给它。

在文件 streaming/detail/tcp/Client.h89 行定义.

◆ _connection_timer

boost::asio::deadline_timer carla::streaming::detail::tcp::Client::_connection_timer
private

连接超时定时器。

这是一个Boost.Asio的deadline_timer对象,用于在连接尝试超过指定时间后触发超时事件。

在文件 streaming/detail/tcp/Client.h101 行定义.

被这些函数引用 Reconnect() , 以及 Stop().

◆ _done

std::atomic_bool carla::streaming::detail::tcp::Client::_done {false}
private

表示客户端是否已完成工作的原子布尔值。

这是一个原子布尔值,用于在线程之间安全地表示客户端是否已完成其工作。初始值为false,表示客户端仍在运行。

在文件 streaming/detail/tcp/Client.h109 行定义.

被这些函数引用 Connect(), ReadData() , 以及 Stop().

◆ _socket

boost::asio::ip::tcp::socket carla::streaming::detail::tcp::Client::_socket
private

TCP套接字,用于与流建立连接。

这是一个Boost.Asio的TCP套接字对象,用于与远程服务器进行通信。

在文件 streaming/detail/tcp/Client.h93 行定义.

被这些函数引用 Connect(), ReadData() , 以及 Stop().

◆ _strand

boost::asio::io_context::strand carla::streaming::detail::tcp::Client::_strand
private

序列化对套接字的访问。

这是一个Boost.Asio的io_context strand对象,用于确保对套接字的访问是线程安全的。

在文件 streaming/detail/tcp/Client.h97 行定义.

被这些函数引用 Connect() , 以及 ReadData().

◆ _token

const token_type carla::streaming::detail::tcp::Client::_token
private

存储流的唯一标识令牌。

这是一个常量,用于在客户端的整个生命周期内唯一标识流。

在文件 streaming/detail/tcp/Client.h85 行定义.

被这些函数引用 Client(), Connect() , 以及 GetStreamId().


该类的文档由以下文件生成: