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

TCP服务器会话类。 更多...

#include <ServerSession.h>

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

Public 类型

using callback_function_type = std::function<void(std::shared_ptr<ServerSession>)>
 回调函数类型别名。
 
using socket_type = boost::asio::ip::tcp::socket
 套接字类型别名。
 

Public 成员函数

void Close ()
 发布一个关闭会话的任务。
 
stream_id_type get_stream_id () const
 获取流ID。
 
void Open (callback_function_type on_opened, callback_function_type on_closed)
 启动会话。
 
 ServerSession (boost::asio::io_context &io_context, time_duration timeout, Server &server)
 构造函数。
 
template<typename... Buffers>
void Write (Buffers... buffers)
 向套接字写入一些数据(模板函数)。
 
void Write (std::shared_ptr< const Message > message)
 向套接字写入一些数据。
 

静态 Public 成员函数

template<typename... Buffers>
static auto MakeMessage (Buffers... buffers)
 创建消息。
 

Private 成员函数

void CloseNow (boost::system::error_code ec=boost::system::error_code())
 立即关闭会话。
 
void StartTimer ()
 启动定时器。
 
- 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 属性

boost::asio::deadline_timer _deadline
 定时器,用于在会话超时后触发关闭操作。
 
bool _is_writing = false
 表示当前是否正在进行写入操作的标志。
 
callback_function_type _on_closed
 会话关闭时的回调函数。
 
Server_server
 Server 对象的引用。
 
const size_t _session_id
 会话的唯一标识符。
 
socket_type _socket
 套接字类型,用于网络通信。
 
boost::asio::io_context::strand _strand
 用于保证异步操作顺序的 strand 对象。
 
stream_id_type _stream_id = 0u
 流标识符,用于标识会话中传输的数据流。
 
time_duration _timeout
 会话超时时长,表示会话在多长时间内无活动将被关闭。
 

友元

class Server
 允许 Server 类访问私有成员。
 

详细描述

TCP服务器会话类。

当会话打开时,它会从套接字读取一个流ID对象,并将自身传递给回调函数。如果在指定的不活动超时后没有活动,会话将自行关闭。

该类继承自std::enable_shared_from_this<ServerSession>,以便能够安全地生成自身的shared_ptr。同时,它私有继承自 profiler::LifetimeProfiled用于性能分析,以及NonCopyable类以防止复制。

在文件 ServerSession.h130 行定义.

成员类型定义说明

◆ callback_function_type

回调函数类型别名。

回调函数接受一个ServerSession的shared_ptr作为参数。

在文件 ServerSession.h144 行定义.

◆ socket_type

using carla::streaming::detail::tcp::ServerSession::socket_type = boost::asio::ip::tcp::socket

套接字类型别名。

在文件 ServerSession.h138 行定义.

构造及析构函数说明

◆ ServerSession()

carla::streaming::detail::tcp::ServerSession::ServerSession ( boost::asio::io_context & io_context,
time_duration timeout,
Server & server )
explicit

构造函数。

参数
io_contextI/O上下文,用于异步操作。
timeout不活动超时时间。
server对Server对象的引用。

在文件 ServerSession.cpp31 行定义.

成员函数说明

◆ Close()

void carla::streaming::detail::tcp::ServerSession::Close ( )

发布一个关闭会话的任务。

该函数安排一个任务来关闭当前会话,但不会立即关闭。

在文件 ServerSession.cpp135 行定义.

引用了 _strand.

被这些函数引用 StartTimer().

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

◆ CloseNow()

void carla::streaming::detail::tcp::ServerSession::CloseNow ( boost::system::error_code ec = boost::system::error_code())
private

立即关闭会话。

该函数用于立即关闭会话,可选地接受一个错误代码参数来表示关闭的原因。

参数
ec关闭会话时的错误代码,默认为无错误。

在文件 ServerSession.cpp154 行定义.

引用了 _deadline, _on_closed, _session_id, _socket , 以及 carla::log_debug().

被这些函数引用 Open() , 以及 Write().

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

◆ get_stream_id()

stream_id_type carla::streaming::detail::tcp::ServerSession::get_stream_id ( ) const
inline

获取流ID。

警告
此函数只能在会话打开后调用。从回调函数中调用此函数是安全的。
返回
流ID。

在文件 ServerSession.h176 行定义.

引用了 _stream_id.

◆ MakeMessage()

template<typename... Buffers>
static auto carla::streaming::detail::tcp::ServerSession::MakeMessage ( Buffers... buffers)
inlinestatic

创建消息。

静态模板函数,接受一个或多个BufferView类型的参数,并创建一个Message对象的shared_ptr。

参数
buffers一个或多个BufferView类型的参数。
返回
Message对象的shared_ptr。
注解
此函数仅接受BufferView类型的参数。

在文件 ServerSession.h190 行定义.

被这些函数引用 carla::streaming::detail::MultiStreamState::Write() , 以及 Write().

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

◆ Open()

void carla::streaming::detail::tcp::ServerSession::Open ( callback_function_type on_opened,
callback_function_type on_closed )

启动会话。

成功读取流ID后调用on_opened回调,会话关闭时调用on_closed回调。 @param on_opened 会话打开时的回调函数。

参数
on_closed会话关闭时的回调函数。

在文件 ServerSession.cpp46 行定义.

引用了 _deadline, _on_closed, _session_id, _socket, _strand, _stream_id, _timeout, CloseNow(), DEBUG_ASSERT, DEBUG_ASSERT_EQ, DEBUG_ONLY, carla::log_debug(), carla::log_error() , 以及 StartTimer().

+ 函数调用图:

◆ StartTimer()

void carla::streaming::detail::tcp::ServerSession::StartTimer ( )
private

启动定时器。

该函数用于启动一个定时器,该定时器在会话空闲时间超过指定时长后触发关闭操作。

在文件 ServerSession.cpp139 行定义.

引用了 _deadline, _session_id, Close(), carla::log_debug() , 以及 StartTimer().

被这些函数引用 Open() , 以及 StartTimer().

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

◆ Write() [1/2]

template<typename... Buffers>
void carla::streaming::detail::tcp::ServerSession::Write ( Buffers... buffers)
inline

向套接字写入一些数据(模板函数)。

该模板函数接受任意数量的缓冲区参数,并将它们组合成一个消息对象,然后写入到套接字中。

参数
buffers要写入的缓冲区,类型应为 BufferView 或其兼容类型。

内部调用 Write(std::shared_ptr<const Message> message) 函数,

通过 MakeMessage 函数将缓冲区参数转换为消息对象。

在文件 ServerSession.h207 行定义.

引用了 MakeMessage() , 以及 Write().

+ 函数调用图:

◆ Write() [2/2]

void carla::streaming::detail::tcp::ServerSession::Write ( std::shared_ptr< const Message > message)

向套接字写入一些数据。

该函数将一个包含数据的消息对象写入到套接字中。

在文件 ServerSession.cpp92 行定义.

引用了 _deadline, _is_writing, _server, _session_id, _socket, _strand, _timeout, CloseNow(), DEBUG_ASSERT, DEBUG_ASSERT_EQ, DEBUG_ONLY, carla::streaming::detail::tcp::Server::IsSynchronousMode(), carla::log_debug() , 以及 carla::log_info().

被这些函数引用 Write().

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

友元及相关函数文档

◆ Server

friend class Server
friend

允许 Server 类访问私有成员。

在文件 ServerSession.h229 行定义.

类成员变量说明

◆ _deadline

boost::asio::deadline_timer carla::streaming::detail::tcp::ServerSession::_deadline
private

定时器,用于在会话超时后触发关闭操作。

在文件 ServerSession.h241 行定义.

被这些函数引用 CloseNow(), Open(), StartTimer() , 以及 Write().

◆ _is_writing

bool carla::streaming::detail::tcp::ServerSession::_is_writing = false
private

表示当前是否正在进行写入操作的标志。

在文件 ServerSession.h247 行定义.

被这些函数引用 Write().

◆ _on_closed

callback_function_type carla::streaming::detail::tcp::ServerSession::_on_closed
private

会话关闭时的回调函数。

在文件 ServerSession.h245 行定义.

被这些函数引用 CloseNow() , 以及 Open().

◆ _server

Server& carla::streaming::detail::tcp::ServerSession::_server
private

Server 对象的引用。

在文件 ServerSession.h231 行定义.

被这些函数引用 Write().

◆ _session_id

const size_t carla::streaming::detail::tcp::ServerSession::_session_id
private

会话的唯一标识符。

在文件 ServerSession.h233 行定义.

被这些函数引用 CloseNow(), Open(), StartTimer() , 以及 Write().

◆ _socket

socket_type carla::streaming::detail::tcp::ServerSession::_socket
private

套接字类型,用于网络通信。

在文件 ServerSession.h237 行定义.

被这些函数引用 CloseNow(), Open() , 以及 Write().

◆ _strand

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

用于保证异步操作顺序的 strand 对象。

在文件 ServerSession.h243 行定义.

被这些函数引用 Close(), Open() , 以及 Write().

◆ _stream_id

stream_id_type carla::streaming::detail::tcp::ServerSession::_stream_id = 0u
private

流标识符,用于标识会话中传输的数据流。

在文件 ServerSession.h235 行定义.

被这些函数引用 get_stream_id() , 以及 Open().

◆ _timeout

time_duration carla::streaming::detail::tcp::ServerSession::_timeout
private

会话超时时长,表示会话在多长时间内无活动将被关闭。

在文件 ServerSession.h239 行定义.

被这些函数引用 Open() , 以及 Write().


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