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 #提案
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