| RMVL 2.3.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | 所有成员列表
rm::async::AsyncReadAwaiter类 参考
数据 IO 与通信模块

通用异步读等待器，核心操作使用文件 I/O 系统调用的 `read`、`ReadFile`，使用者可以通过 更多...

`#include <rmvl/io/async.hpp>`

类 rm::async::AsyncReadAwaiter 继承关系图:
rm::async::AsyncReadAwaiter 的协作图:

## Public 成员函数
| AsyncReadAwaiter (IOContext &ctx, FileDescriptor fd)
| 创建异步读等待器
Public 成员函数 继承自 rm::async::AsyncIOAwaiter
| AsyncIOAwaiter (IOContext &context, FileDescriptor fd)
| 创建异步 IO 等待器

## 额外继承的成员函数
Protected 属性 继承自 rm::async::AsyncIOAwaiter
FileDescriptor | _aioh {INVALID_FD}
| 异步 I/O 文件描述符（Windows 下为 IOCP，Linux 下为 epoll）
FileDescriptor | _fd {INVALID_FD}
| 文件句柄

## 详细描述

通用异步读等待器，核心操作使用文件 I/O 系统调用的 `read`、`ReadFile`，使用者可以通过

- 继承该类并选择性的实现 `await_suspend` 以及 `await_resume` 方法
- 直接使用该类 来实现自己的异步读等待器

// 使用示例
class Socket {
public:
Socket(IOContext &io_context, FileDescriptor fd) : _ctx(io_context), _fd(fd) {}
AsyncReadAwaiter read() { return {_ctx, _fd}; }
// 其他成员函数...
private:
IOContext &_ctx;
FileDescriptor _fd{INVALID_FD};
};
// 在协程中使用异步读等待器
Task<> session(Socket &s) {
auto data = co_await s.read();
// 处理读取到的数据...
}
rm::async::AsyncIOAwaiter::_fd
FileDescriptor _fd
文件句柄
定义 async.hpp:301
rm::async::AsyncReadAwaiter
通用异步读等待器，核心操作使用文件 I/O 系统调用的 read、ReadFile，使用者可以通过
定义 async.hpp:333
rm::async::IOContext
异步 I/O 执行上下文，负责管理 IO 事件循环和协程任务的调度
定义 async.hpp:177
rm::async::Socket
Socket 异步会话层
定义 socket.hpp:297
rm::FileDescriptor
int FileDescriptor
文件描述符类型定义
定义 async.hpp:43

## 构造及析构函数说明

## ◆ AsyncReadAwaiter()

rm::async::AsyncReadAwaiter::AsyncReadAwaiter | ( | IOContext & | ctx,
|  | FileDescriptor | fd )
| inline

创建异步读等待器

参数

  [in] | ctx | 异步 I/O 执行上下文
  [in] | fd | 需要监听的文件描述符（文件句柄）

函数调用图:

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

- rmvl/io/async.hpp