1 个不稳定版本
0.2.0 | 2020 年 9 月 16 日 |
---|
#2 在 #permissionless
21KB
222 行
TDN-权限
TDN 的多个权限/无权限库。
使用简单
use tdn::prelude::start;
use tdn_permission::PermissionlessGroup;
use tdn_types::message::{GroupReceiveMessage, ReceiveMessage};
fn main() {
smol::block_on(async {
let mut group = PermissionlessGroup::default();
let (_peer_addr, send, recv) = start().await.unwrap();
while let Ok(message) = recv.recv().await {
match message {
ReceiveMessage::Group(GroupReceiveMessage::PeerJoin(peer, addr, data)) => {
group.join(peer, addr, data, send.clone()).await;
}
ReceiveMessage::Group(GroupReceiveMessage::PeerJoinResult(peer, is_ok, result)) => {
group.join_result(peer, is_ok, result);
}
ReceiveMessage::Group(GroupReceiveMessage::PeerLeave(peer)) => {
group.leave(&peer);
}
_ => {
println!("recv: {:?}", message);
}
}
}
});
}
测试示例
-
测试公共:
cargo run --example permissionless
-
测试 CA 权限:
cargo run --example ca_permissioned
-
测试投票权限:
cargo run --example vote_permissioned
特性
- 无权限(公共)
- CA 权限(可信 CA)
- 投票权限(投票)
许可证
该项目可根据您的选择使用以下任一许可证:
- Apache 许可证 2.0 版本,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
依赖项
~2.5–3.5MB
~58K SLoC