21 template <
typename StreamStateT>
43 return state->MakeBuffer();
47 template <
typename... Buffers>
48 void Write(Buffers &&... buffers) {
56 buffer.copy_from(data);
57 Write(std::move(buffer));
70 Stream(std::shared_ptr<StreamStateT> state)
#define DEBUG_ASSERT(predicate)
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
Keeps the mapping between streams and sessions.
Stream & operator<<(const T &data)
复制 data 并将其刷新到流中。
Token token() const
与此流关联的 Token。客户端可使用该 Token 订阅此流。
Stream & operator=(const Stream &)=default
Stream(std::shared_ptr< StreamStateT > state)
bool AreClientsListening()
检查是否有客户端正在监听
std::shared_ptr< StreamStateT > _shared_state
void Write(Buffers &&... buffers)
将 buffers 刷新到流中。不会进行复制。
Stream & operator=(Stream &&)=default
Buffer MakeBuffer()
从与此流关联的缓冲池中获取一个缓冲区。被丢弃的缓冲区将被重用以避免内存分配。
Stream(Stream &&)=default
Stream(const Stream &)=default