#stream #rotor #tcp-socket #sockets #mio #tcp #unix-socket

rotor-stream

在 rotor 上构建流抽象。这是在 TCP(Unix 套接字)上构建协议的最简单方法

6 个版本 (3 个重大更新)

使用旧的 Rust 2015

0.6.2 2016 年 3 月 30 日
0.6.1 2016 年 3 月 28 日
0.5.1 2016 年 3 月 3 日
0.4.0 2016 年 2 月 10 日
0.1.0 2016 年 1 月 4 日

7#rotor

Download history 27/week @ 2024-04-15 37/week @ 2024-04-22 22/week @ 2024-04-29 23/week @ 2024-05-06 34/week @ 2024-05-13 27/week @ 2024-05-20 36/week @ 2024-05-27 26/week @ 2024-06-03 18/week @ 2024-06-10 27/week @ 2024-06-17 25/week @ 2024-06-24 30/week @ 2024-07-01 6/week @ 2024-07-08 28/week @ 2024-07-15 19/week @ 2024-07-22 18/week @ 2024-07-29

每月 71 次下载
用于 4 crates

MIT 许可证

47KB
973

Rotor Stream

状态Alpha
依赖项rotor, mio, netbuf

基于 MIO 的流抽象。特性

  • 基于状态机实现(如通常在 rotor 中)
  • 使用 netbuf 进行缓冲,缓冲区具有连续的数据切片(易于解析)
  • 输入数据抽象:读取 N 字节,读取到分隔符
  • 非常适合请求-回复风格协议
  • 与客户端或服务器无关,无论是 TCP 还是 Unix 套接字
  • (待办事项) 应该可以基于 SSL 以后使用

lib.rs:

rotor 的流抽象

该软件包提供

  • 网络套接字的缓冲
  • 简单的抽象,如读取 N 字节,读取到 '\n'
  • 持久(自动重连)客户端连接
  • 服务器端接受连接的抽象

流的假设

  1. 您通过长度前缀或固定字符串分隔的块来读取数据,而不是逐字节读取
  2. 每个块适合内存
  3. 您的数据流不是完全全双工的:虽然您可以同时读取和写入,但在您应用推回(即等待字节被刷新)时,您不能执行读取 [*]

[*] 这与 HTTP 完美匹配,以及大多数双向交互式工作流程(包括基于 WebSocket 的)。但对于某些情况可能难以实现。其中一个案例是当您需要生成一些输出流(您无法缓冲它),并且必须同时解析输入流时。

依赖项

~4.5MB
~81K SLoC