| RMVL 2.4.0 Robotic Manipulation and Vision Library

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

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

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

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

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

## Protected 属性
std::string_view | _data {}
| 待写入的数据
Protected 属性 继承自 rm::async::AsyncIOAwaiter
FileDescriptor | _aioh {INVALID_FD}
| 异步 I/O 文件描述符（Windows 下为 IOCP，Linux 下为 epoll）
FileDescriptor | _fd {INVALID_FD}
| 文件句柄

## 详细描述

通用异步写等待器，核心操作使用文件 I/O 系统调用的 write、WriteFile，使用者可以通过

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

// 使用示例
class Socket {
public:
Socket(IOContext &io_context, FileDescriptor fd) : _ctx(io_context), _fd(fd) {}
AsyncWriteAwaiter write(std::string_view data) { return {_ctx, _fd, data}; }
// 其他成员函数...
private:
IOContext &_ctx;
FileDescriptor _fd{INVALID_FD};
};
// 在协程中使用异步写等待器
Task<> session(Socket &s) {
bool success = co_await s.write("Hello, World!");
if (success) {
// 处理写入成功的逻辑...
} else {
// 处理写入失败的逻辑...
}
}
rm::async::AsyncIOAwaiter::_fd
FileDescriptor _fd
文件句柄
定义 async.hpp:302
rm::async::AsyncWriteAwaiter
通用异步写等待器，核心操作使用文件 I/O 系统调用的 write、WriteFile，使用者可以通过
定义 async.hpp:380
rm::async::IOContext
异步 I/O 执行上下文，负责管理 IO 事件循环和协程任务的调度
定义 async.hpp:177
rm::FileDescriptor
int FileDescriptor
文件描述符类型定义
定义 async.hpp:43

## 构造及析构函数说明

## ◆ AsyncWriteAwaiter()

rm::async::AsyncWriteAwaiter::AsyncWriteAwaiter | ( | IOContext & | ctx,
|  | FileDescriptor | fd,
|  | std::string_view | data )
| inline

创建异步写等待器

参数

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

函数调用图:

## 类成员变量说明

## ◆ _data

std::string_view rm::async::AsyncWriteAwaiter::_data {}
| protected

待写入的数据