3个不稳定版本
新版本 0.7.1 | 2024年8月23日 |
---|---|
0.7.0 | 2022年10月26日 |
0.6.0 | 2022年7月5日 |
#315 在 数据结构
每月162次下载
用于 4 crates
120KB
3K SLoC
原始Fledger模块
此crate包含Fledger的原始模块。它们以尽可能可重用的方式编写。为此,大多数模块都具有以下结构
broker.rs
- 包含与其他模块交互的代码module.rs
- 模块的主要代码,至少有一个process_msg
方法,该方法输入一条消息并输出一个答案向量- data-structures - 实现模块的基本功能。
目前有以下模块可用
random_connections
接受节点列表并随机选择足够节点以形成全连接网络ping
使用random_connections
定期向连接的节点发送消息以确保它们响应。如果一个节点在规定时间内没有响应,则发出故障消息。gossip_events
交换节点发出的事件并更新列表。它既可以在主动模式下工作 - 向邻居发送新消息 - 也可以在被动模式下工作 - 从其他节点请求可用事件的列表。
代理
我想为Fledger的libc和wasm实现创建通用的代码。不幸的是,由于libc允许使用线程(有时需要线程),因此某些结构需要具有 Send
和 Sync
特性。但并非所有必要的websys模块都具有这些特性!因此,我想出了使用 Broker
系统链接所有模块的想法。
简而言之,一个模块的所有输入和输出都定义为消息。然后每个模块处理传入的消息并生成传出消息。可以通过定义 Translators
将消息从一个模块转换为另一个模块的消息来将模块链接在一起。
依赖项
~12–24MB
~327K SLoC