|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
异步流抽象基类 更多...
#include <async_stream.hpp>
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 等完成令牌支持。
在文件 async_stream.hpp 第 33 行定义.
|
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.hpp 第 204 行定义.
引用了 async_read(), neforce::dynamic_buffer::commit(), neforce::move() , 以及 neforce::dynamic_buffer::prepare().
|
pure virtual |
异步读取(带取消槽)
| ctx | 异步 I/O 执行上下文 |
| buffer | 接收缓冲区 |
| slot | 取消槽 |
| handler | 完成回调 void(error_code, size_t bytes_transferred) |
在 neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.
|
inline |
异步读取—detached(即发即忘)
| ctx | 异步 I/O 执行上下文 |
| buffer | 接收缓冲区 |
在文件 async_stream.hpp 第 108 行定义.
引用了 async_read().
|
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().
|
inline |
异步读取—任意可调用对象
| Token | 可调用对象类型,需满足 void(error_code, size_t) 签名 |
| ctx | 异步 I/O 执行上下文 |
| buffer | 接收缓冲区 |
| token | 完成令牌 |
委托到纯虚 async_read(ctx, buffer, function<...>)。
在文件 async_stream.hpp 第 87 行定义.
引用了 async_read() , 以及 neforce::forward().
|
inline |
异步读取—use_awaitable
| ctx | 异步 I/O 执行上下文 |
| buffer | 接收缓冲区 |
在文件 async_stream.hpp 第 119 行定义.
引用了 async_read() , 以及 neforce::use_awaitable.
|
inline |
异步读取—use_future
| ctx | 异步 I/O 执行上下文 |
| buffer | 接收缓冲区 |
在文件 async_stream.hpp 第 97 行定义.
引用了 async_read() , 以及 neforce::use_future.
| 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。
| 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。
|
pure virtual |
异步写入(带取消槽)
| ctx | 异步 I/O 执行上下文 |
| buffer | 发送缓冲区 |
| slot | 取消槽 |
| handler | 完成回调 void(error_code, size_t bytes_transferred) |
在 neforce::ssl_stream , 以及 neforce::tcp_socket 内被实现.
|
inline |
异步写入—detached(即发即忘)
| ctx | 异步 I/O 执行上下文 |
| buffer | 发送缓冲区 |
在文件 async_stream.hpp 第 157 行定义.
引用了 async_write().
|
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().
|
inline |
异步写入—任意可调用对象
| Token | 可调用对象类型,需满足 void(error_code, size_t) 签名 |
| ctx | 异步 I/O 执行上下文 |
| buffer | 发送缓冲区 |
| token | 完成令牌 |
委托到纯虚 async_write(ctx, buffer, function<...>)。
在文件 async_stream.hpp 第 136 行定义.
引用了 async_write() , 以及 neforce::forward().
|
inline |
异步写入—use_awaitable
| ctx | 异步 I/O 执行上下文 |
| buffer | 发送缓冲区 |
在文件 async_stream.hpp 第 168 行定义.
引用了 async_write() , 以及 neforce::use_awaitable.
|
inline |
异步写入—use_future
| ctx | 异步 I/O 执行上下文 |
| buffer | 发送缓冲区 |
在文件 async_stream.hpp 第 146 行定义.
引用了 async_write() , 以及 neforce::use_future.