3个不稳定版本

新版本 0.7.1 2024年8月23日
0.7.0 2022年10月26日
0.6.0 2022年7月5日

#315数据结构

Download history 1/week @ 2024-05-17 1/week @ 2024-06-07 1/week @ 2024-06-14 1/week @ 2024-06-21

每月162次下载
用于 4 crates

MIT/Apache

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允许使用线程(有时需要线程),因此某些结构需要具有 SendSync 特性。但并非所有必要的websys模块都具有这些特性!因此,我想出了使用 Broker 系统链接所有模块的想法。

简而言之,一个模块的所有输入和输出都定义为消息。然后每个模块处理传入的消息并生成传出消息。可以通过定义 Translators 将消息从一个模块转换为另一个模块的消息来将模块链接在一起。

依赖项

~12–24MB
~327K SLoC