由 rm::async::Acceptor 建立的流式 Socket 异步会话
更多...
#include <rmvl/io/socket.hpp>
|
| SocketReadAwaiter | read () |
| | 异步读取已连接的 Socket 中的数据
|
| SocketWriteAwaiter | write (std::string_view data) |
| | 异步写入数据到已连接的 Socket 中
|
| IOContext & | context () noexcept |
| | 获取所属异步 I/O 执行上下文
|
| const IOContext & | context () const noexcept |
| | 获取所属异步 I/O 执行上下文
|
| SocketMultiReadAwaiter | multiread (const std::vector< size_t > &sizes) |
| | 异步多缓冲区读取
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>> |
| SocketMultiReadAwaiter | multiread (Args... sizes) |
| | 异步多缓冲区读取
|
| SocketMultiWriteAwaiter | multiwrite (const std::vector< std::string_view > &buffers) |
| | 异步多缓冲区写入
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>> |
| SocketMultiWriteAwaiter | multiwrite (Args &&...args) |
| | 异步多缓冲区写入
|
| bool | invalid () const noexcept |
| | 会话是否失效
|
| SocketFd | native_handle () const noexcept |
| | 获取底层 Socket 描述符
|
| template<typename SockOpt> |
| void | setOption (const SockOpt &opt) |
| | 设置 Socket 选项
|
| Endpoint | endpoint () const |
| | 获取绑定的端点
|
| std::string | read () noexcept |
| | 同步读取已连接的 Socket 中的数据(阻塞)
|
| bool | write (std::string_view data) noexcept |
| | 同步写入数据到已连接的 Socket 中(阻塞)
|
| bool | multiwrite (const std::vector< std::string_view > &buffers) noexcept |
| | 同步多缓冲区写入
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>> |
| bool | multiwrite (Args &&...args) noexcept |
| | 同步多缓冲区写入
|
| std::vector< std::string > | multiread (const std::vector< size_t > &sizes) |
| | 同步多缓冲区读取
|
| template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>> |
| std::vector< std::string > | multiread (Args... sizes) |
| | 同步多缓冲区读取
|
| size_t | read_to (char *buf, size_t size) noexcept |
| | 同步读取数据到指定预分配内存中
|
| void | close () noexcept |
| | 手动关闭 Socket 会话,一般情况无需调用,除非需要提前释放资源
|
由 rm::async::Acceptor 建立的流式 Socket 异步会话
◆ context() [1/2]
| const IOContext & rm::async::StreamSocket::context |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
◆ context() [2/2]
| IOContext & rm::async::StreamSocket::context |
( |
| ) |
|
|
inlinenodiscardnoexcept |
◆ multiread() [1/2]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_convertible_v<Args, size_t> && ...)>>
异步多缓冲区读取
auto data_parts = co_await socket.multiread(5, 10, 15);
- 模板参数
-
| Args | 可变参数包,要求每个参数都能转换为 size_t |
- 参数
-
◆ multiread() [2/2]
异步多缓冲区读取
auto data_parts = co_await socket.multiread({5, 10, 15});
- 参数
-
- 返回
- 读取到的数据分片数组(遇到异常或断开时,返回的 vector 会少于期望分片或包含空串)
◆ multiwrite() [1/2]
template<typename... Args, typename Enable = std::enable_if_t<(sizeof...(Args) > 0) && (std::is_constructible_v<std::string_view, Args> && ...)>>
异步多缓冲区写入
bool success = co_await socket.multiwrite("Hello", ", ", "World!");
- 模板参数
-
| Args | 可变参数包,要求每个参数都能构造为 std::string_view |
- 参数
-
◆ multiwrite() [2/2]
异步多缓冲区写入
bool success = co_await socket.multiwrite({"Hello", ", ", "World!"});
- 参数
-
- 返回
- 是否写入成功
◆ read()
异步读取已连接的 Socket 中的数据
auto str =
co_await socket.read();
- 返回
- 使用 std::string 存储的读取到的数据
◆ write()
异步写入数据到已连接的 Socket 中
bool success = co_await socket.write("Hello, World!");
- 参数
-
- 返回
- 是否写入成功