RMVL  2.4.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::async::AsyncWriteAwaiter类 参考

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

#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 系统调用的 writeWriteFile,使用者可以通过

  • 继承该类并选择性的实现 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 {
// 处理写入失败的逻辑...
}
}
FileDescriptor _fd
文件句柄
定义 async.hpp:302
通用异步写等待器,核心操作使用文件 I/O 系统调用的 write、WriteFile,使用者可以通过
定义 async.hpp:380
异步 I/O 执行上下文,负责管理 IO 事件循环和协程任务的调度
定义 async.hpp:177
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

待写入的数据


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