5 个版本

0.2.0 2021 年 8 月 26 日
0.1.3 2021 年 8 月 24 日
0.1.2 2021 年 8 月 24 日
0.1.1 2021 年 8 月 24 日
0.1.0 2021 年 8 月 24 日

#19 in #提案

MIT 许可证

28KB
694

冷-I/O

它是 mio 的封装。允许将网络应用程序编写为状态机以简化测试。

提议者

核心实体是 Proposer,它与用户实现的状态机一起工作。

Proposer 为状态机提供一系列 Proposal。对于每个 Proposal,状态机可以返回一些 Request

提议

它包含随机数生成器、上一次提议的时间差以及以下消息之一:

  • 唤醒 - Proposer 向状态机发送的第一个消息。这是状态机提供第一个请求所必需的。
  • 空闲 - 表示在一段时间内没有发生任何事情的消息。
  • OnReadable/OnWritable - 远程对等方已准备好传输/接收数据。此消息提供了一个管理流。此对象只能使用一次。

管理流

状态机在 OnReadable 事件的同时接收 ReadOnce 对象。状态机可以读取它、丢弃它或将其存储以供以后使用。提议者不会发送另一个 ReadOnce,直到之前的没有消耗。它可以被丢弃,并且连接部分(读取或写入)将被关闭。如果状态机读取了该对象,它将知道已读取多少字节,以及是否有更多。

状态机在 OnWritable 事件的同时接收 WriteOnce 对象。它与 ReadOnce 非常相似。

请求

以下是一些基本请求:

  • 传入连接的来源。它可以是端口,也可以是空。计划从另一个线程接收传入连接。
  • 将对等方或一组对等方列入黑名单。
  • 连接到对等方或一组对等方。

依赖关系

~0.7–1.2MB
~20K SLoC