连接单个流的客户端。 更多...
#include <Client.h>
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 () |
重新连接流。 | |
![]() | |
LifetimeProfiled ()=default | |
![]() | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable (NonCopyable &&)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
NonCopyable & | operator= (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 |
存储流的唯一标识令牌。 | |
carla::streaming::detail::tcp::Client::callback_function_type = std::function<void (Buffer)> |
回调函数类型,接收一个Buffer作为参数。
在文件 streaming/detail/tcp/Client.h 第 50 行定义.
carla::streaming::detail::tcp::Client::endpoint = boost::asio::ip::tcp::endpoint |
TCP端点类型,用于表示TCP连接的一端。
在文件 streaming/detail/tcp/Client.h 第 44 行定义.
carla::streaming::detail::tcp::Client::protocol_type = endpoint::protocol_type |
协议类型,表示TCP协议。
在文件 streaming/detail/tcp/Client.h 第 47 行定义.
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.cpp 第 73 行定义.
引用了 _token, carla::streaming::detail::token_type::protocol_is_tcp() , 以及 carla::throw_exception().
|
default |
析构函数。
void carla::streaming::detail::tcp::Client::Connect | ( | ) |
连接到指定的流。
在文件 streaming/detail/tcp/Client.cpp 第 94 行定义.
引用了 _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().
|
inline |
获取流的ID。
在文件 streaming/detail/tcp/Client.h 第 67 行定义.
引用了 _token , 以及 carla::streaming::detail::token_type::get_stream_id().
|
private |
从流中读取数据。
此方法从已连接的流中读取数据,并处理这些数据。
在文件 streaming/detail/tcp/Client.cpp 第 181 行定义.
引用了 _buffer_pool, _done, _socket, _strand, Connect(), DEBUG_ASSERT_EQ, DEBUG_ASSERT_NE, DEBUG_ONLY, carla::log_debug() , 以及 ReadData().
被这些函数引用 Connect() , 以及 ReadData().
|
private |
重新连接流。
此方法尝试重新建立与流的连接。
在文件 streaming/detail/tcp/Client.cpp 第 169 行定义.
引用了 _connection_timer, Connect() , 以及 carla::time_duration::seconds().
被这些函数引用 Connect().
void carla::streaming::detail::tcp::Client::Stop | ( | ) |
|
private |
指向缓冲区池的共享指针。
这是一个指向BufferPool对象的共享指针,用于管理内存缓冲区。
在文件 streaming/detail/tcp/Client.h 第 105 行定义.
被这些函数引用 ReadData().
|
private |
|
private |
连接超时定时器。
这是一个Boost.Asio的deadline_timer对象,用于在连接尝试超过指定时间后触发超时事件。
在文件 streaming/detail/tcp/Client.h 第 101 行定义.
被这些函数引用 Reconnect() , 以及 Stop().
|
private |
表示客户端是否已完成工作的原子布尔值。
这是一个原子布尔值,用于在线程之间安全地表示客户端是否已完成其工作。初始值为false,表示客户端仍在运行。
在文件 streaming/detail/tcp/Client.h 第 109 行定义.
被这些函数引用 Connect(), ReadData() , 以及 Stop().
|
private |
TCP套接字,用于与流建立连接。
这是一个Boost.Asio的TCP套接字对象,用于与远程服务器进行通信。
在文件 streaming/detail/tcp/Client.h 第 93 行定义.
被这些函数引用 Connect(), ReadData() , 以及 Stop().
|
private |
序列化对套接字的访问。
这是一个Boost.Asio的io_context strand对象,用于确保对套接字的访问是线程安全的。
在文件 streaming/detail/tcp/Client.h 第 97 行定义.
被这些函数引用 Connect() , 以及 ReadData().
|
private |
存储流的唯一标识令牌。
这是一个常量,用于在客户端的整个生命周期内唯一标识流。
在文件 streaming/detail/tcp/Client.h 第 85 行定义.
被这些函数引用 Client(), Connect() , 以及 GetStreamId().