#async-io #frame #framed #io #async #net #io-operations

framed_aio

一个允许以帧的方式执行异步 IO 操作的 crate

2 个版本

0.1.1 2022 年 9 月 13 日
0.1.0 2022 年 9 月 13 日

#5 in #framed

GPL-3.0-only

27KB
330

一个用于帧异步 IO 的 crate。

这个 crate 允许以帧的方式执行 IO 操作,这意味着您可以通过发送和接收字节数组而不是字节数据流来发送和接收字节数组。

帧的读取是以取消安全的方式实现的,这意味着您可以在 tokio::select! 的一分支中使用它。

实现也针对高性能和低开销进行了优化。

目标

  • 提供取消安全
  • 高性能
  • 低开销

示例

有关使用此 crate 的示例,请参阅 examples 目录。


lib.rs:

一个用于帧异步 IO 的 crate。

这个 crate 允许以帧的方式执行 IO 操作,这意味着您可以通过发送和接收字节数组而不是字节数据流来发送和接收字节数组。

帧的读取是以取消安全的方式实现的,这意味着您可以在 tokio::select! 的一分支中使用它。

实现也针对高性能和低开销进行了优化。

目标

  • 提供取消安全
  • 高性能
  • 低开销

用法

要从实现 AsyncRead 的某些类型以帧的方式读取,您可以将其包装在 FramedReader 中并调用 FramedReader::read_frame

要将某些类型写入实现 AsyncWrite 的类型以帧的方式,您可以将其包装在 FramedWriter 中并调用 FramedWriter::write_frameFramedWriter::write_frame_cancel_safe 以取消安全的方式写入帧。

类型化帧

如果您希望发送类型化帧(即包含序列化对象的帧),则需要启用 typed 功能标志。

您可以使用FramedReader::read_frame_typedFramedWriter::write_frame_typed函数来读取和写入类型化帧。

依赖项

约2.4–4MB
约70K SLoC