38 template <
typename... Buffers>
39 void Write(Buffers... buffers) {
42 if (session !=
nullptr) {
45 session->Write(std::move(message));
46 log_debug(
"sensor ", session->get_stream_id(),
" data sent");
53 std::lock_guard<std::mutex> lock(
_mutex);
60 log_debug(
"sensor ", s->get_stream_id(),
" data sent ");
88 std::lock_guard<std::mutex> lock(
_mutex);
90 _sessions.emplace_back(std::move(session));
104 std::lock_guard<std::mutex> lock(
_mutex);
105 log_debug(
"Calling DisconnectSession for ", session->get_stream_id());
136 std::lock_guard<std::mutex> lock(
_mutex);
151 log_debug(
"Disconnecting all multistream sessions");
#define DEBUG_ASSERT(predicate)
包含 Carla 框架中与网络流相关的类和函数的声明。
包含StreamStateBase类的定义,它是流状态的基础类。
A stream state that can hold any number of sessions.
void ClearSessions() final
清除所有会话。
void DisconnectSession(std::shared_ptr< Session > session) final
断开与会话的连接。
std::vector< std::shared_ptr< Session > > _sessions
AtomicSharedPtr< Session > _session
bool AreClientsListening()
void ConnectSession(std::shared_ptr< Session > session) final
连接到会话。
void Write(Buffers... buffers)
MultiStreamState(const token_type &token)
所有流副本之间的共享状态类。如果处于活动状态,则提供对底层服务器会话的访问。
StreamStateBase(const token_type &token)
构造函数,使用给定的令牌初始化对象。
const token_type & token() const
获取用于初始化对象的令牌。
static auto MakeMessage(Buffers... buffers)
创建消息。
静态断言,用于确保token_data结构体的大小与Token::data的大小相同。
static void log_debug(Args &&... args)