NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
neforce::async_stream类 参考abstract

异步流抽象基类 更多...

#include <async_stream.hpp>

类 neforce::async_stream 继承关系图:
[图例]

Public 成员函数

virtual ~async_stream ()=default
 析构函数
virtual void async_read (io_context &ctx, memory_view< char > buffer, function< void(error_code, size_t)> handler)=0
 异步读取数据
virtual void async_read (io_context &ctx, memory_view< char > buffer, cancellation_slot &slot, function< void(error_code, size_t)> handler)=0
 异步读取(带取消槽)
virtual void async_write (io_context &ctx, memory_view< const char > buffer, function< void(error_code, size_t)> handler)=0
 异步写入数据
virtual void async_write (io_context &ctx, memory_view< const char > buffer, cancellation_slot &slot, function< void(error_code, size_t)> handler)=0
 异步写入(带取消槽)
template<typename Token, enable_if_t<!is_same_v< decay_t< Token >, function< void(error_code, size_t)> >, int > = 0>
void async_read (io_context &ctx, memory_view< char > buffer, Token &&token)
 异步读取—任意可调用对象
auto async_read (io_context &ctx, memory_view< char > buffer, use_future_t)
 异步读取—use_future
void async_read (io_context &ctx, memory_view< char > buffer, detached_t)
 异步读取—detached(即发即忘)
auto async_read (io_context &ctx, memory_view< char > buffer, use_awaitable_t)
 异步读取—use_awaitable
template<typename Token, enable_if_t<!is_same_v< decay_t< Token >, function< void(error_code, size_t)> >, int > = 0>
void async_write (io_context &ctx, memory_view< const char > buffer, Token &&token)
 异步写入—任意可调用对象
auto async_write (io_context &ctx, memory_view< const char > buffer, use_future_t)
 异步写入—use_future
void async_write (io_context &ctx, memory_view< const char > buffer, detached_t)
 异步写入—detached(即发即忘)
auto async_write (io_context &ctx, memory_view< const char > buffer, use_awaitable_t)
 异步写入—use_awaitable
void async_read (io_context &ctx, mutable_buffers &bufs, function< void(error_code, size_t)> handler)
 异步读取—scatter-gather
void async_write (io_context &ctx, const_buffers &bufs, function< void(error_code, size_t)> handler)
 异步写入—scatter-gather
void async_read (io_context &ctx, dynamic_buffer &buf, size_t n, function< void(error_code, size_t)> handler)
 异步读取到 dynamic_buffer

详细描述

异步流抽象基类

定义异步读写的纯虚接口。派生类实现四个纯虚方法后, 自动获得 use_future、detached、use_awaitable 等完成令牌支持。

注解
仅抽象异步 read/write 行为——连接(connect/accept)和地址操作留在具体类中。

在文件 async_stream.hpp33 行定义.

成员函数说明

◆ async_read() [1/8]

void neforce::async_stream::async_read ( io_context & ctx,
dynamic_buffer & buf,
size_t n,
function< void(error_code, size_t)> handler )
inline

异步读取到 dynamic_buffer

参数
ctx异步 I/O 执行上下文
buf动态缓冲区(prepare/commit/consume)
n最少读取字节数
handler完成回调 void(error_code, size_t bytes_read)

调用 buf.prepare(n) 获取写入区域,完成后 buf.commit(n)。

在文件 async_stream.hpp204 行定义.

引用了 async_read(), neforce::dynamic_buffer::commit(), neforce::move() , 以及 neforce::dynamic_buffer::prepare().

◆ async_read() [2/8]

virtual void neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
cancellation_slot & slot,
function< void(error_code, size_t)> handler )
pure virtual

异步读取(带取消槽)

参数
ctx异步 I/O 执行上下文
buffer接收缓冲区
slot取消槽
handler完成回调 void(error_code, size_t bytes_transferred)

neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.

◆ async_read() [3/8]

void neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
detached_t  )
inline

异步读取—detached(即发即忘)

参数
ctx异步 I/O 执行上下文
buffer接收缓冲区

在文件 async_stream.hpp108 行定义.

引用了 async_read().

◆ async_read() [4/8]

virtual void neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
function< void(error_code, size_t)> handler )
pure virtual

异步读取数据

参数
ctx异步 I/O 执行上下文
buffer接收缓冲区
handler完成回调 void(error_code, size_t bytes_transferred)

neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.

被这些函数引用 async_read(), async_read(), async_read(), async_read(), async_read() , 以及 neforce::tcp_socket::async_receive().

◆ async_read() [5/8]

template<typename Token, enable_if_t<!is_same_v< decay_t< Token >, function< void(error_code, size_t)> >, int > = 0>
void neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
Token && token )
inline

异步读取—任意可调用对象

模板参数
Token可调用对象类型,需满足 void(error_code, size_t) 签名
参数
ctx异步 I/O 执行上下文
buffer接收缓冲区
token完成令牌

委托到纯虚 async_read(ctx, buffer, function<...>)。

在文件 async_stream.hpp87 行定义.

引用了 async_read() , 以及 neforce::forward().

◆ async_read() [6/8]

auto neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
use_awaitable_t  )
inline

异步读取—use_awaitable

参数
ctx异步 I/O 执行上下文
buffer接收缓冲区
返回
awaitable<size_t> 可协程等待的结果

在文件 async_stream.hpp119 行定义.

引用了 async_read() , 以及 neforce::use_awaitable.

◆ async_read() [7/8]

auto neforce::async_stream::async_read ( io_context & ctx,
memory_view< char > buffer,
use_future_t  )
inline

异步读取—use_future

参数
ctx异步 I/O 执行上下文
buffer接收缓冲区
返回
future<size_t> 读取字节数

在文件 async_stream.hpp97 行定义.

引用了 async_read() , 以及 neforce::use_future.

◆ async_read() [8/8]

void neforce::async_stream::async_read ( io_context & ctx,
mutable_buffers & bufs,
function< void(error_code, size_t)> handler )

异步读取—scatter-gather

参数
ctx异步 I/O 执行上下文
bufs多个接收缓冲区
handler完成回调 void(error_code, size_t total_read)

依次填满每个缓冲区,委托到纯虚 async_read。

◆ async_write() [1/7]

void neforce::async_stream::async_write ( io_context & ctx,
const_buffers & bufs,
function< void(error_code, size_t)> handler )

异步写入—scatter-gather

参数
ctx异步 I/O 执行上下文
bufs多个发送缓冲区
handler完成回调 void(error_code, size_t total_written)

依次发送每个缓冲区,委托到纯虚 async_write。

◆ async_write() [2/7]

virtual void neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
cancellation_slot & slot,
function< void(error_code, size_t)> handler )
pure virtual

异步写入(带取消槽)

参数
ctx异步 I/O 执行上下文
buffer发送缓冲区
slot取消槽
handler完成回调 void(error_code, size_t bytes_transferred)

neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.

◆ async_write() [3/7]

void neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
detached_t  )
inline

异步写入—detached(即发即忘)

参数
ctx异步 I/O 执行上下文
buffer发送缓冲区

在文件 async_stream.hpp157 行定义.

引用了 async_write().

◆ async_write() [4/7]

virtual void neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
function< void(error_code, size_t)> handler )
pure virtual

异步写入数据

参数
ctx异步 I/O 执行上下文
buffer发送缓冲区
handler完成回调 void(error_code, size_t bytes_transferred)

neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.

被这些函数引用 neforce::tcp_socket::async_send(), async_write(), async_write(), async_write() , 以及 async_write().

◆ async_write() [5/7]

template<typename Token, enable_if_t<!is_same_v< decay_t< Token >, function< void(error_code, size_t)> >, int > = 0>
void neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
Token && token )
inline

异步写入—任意可调用对象

模板参数
Token可调用对象类型,需满足 void(error_code, size_t) 签名
参数
ctx异步 I/O 执行上下文
buffer发送缓冲区
token完成令牌

委托到纯虚 async_write(ctx, buffer, function<...>)。

在文件 async_stream.hpp136 行定义.

引用了 async_write() , 以及 neforce::forward().

◆ async_write() [6/7]

auto neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
use_awaitable_t  )
inline

异步写入—use_awaitable

参数
ctx异步 I/O 执行上下文
buffer发送缓冲区
返回
awaitable<size_t> 可协程等待的结果

在文件 async_stream.hpp168 行定义.

引用了 async_write() , 以及 neforce::use_awaitable.

◆ async_write() [7/7]

auto neforce::async_stream::async_write ( io_context & ctx,
memory_view< const char > buffer,
use_future_t  )
inline

异步写入—use_future

参数
ctx异步 I/O 执行上下文
buffer发送缓冲区
返回
future<size_t> 写入字节数

在文件 async_stream.hpp146 行定义.

引用了 async_write() , 以及 neforce::use_future.


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