#io #handler #vapcore #peer #service #read #devp2p

vapcore-network-devp2p

vapcore网络库的DevP2P实现

显示包…

1个稳定版本

1.12.0 2021年2月28日

#6#vapcore


4 个包中(直接使用2个) 使用

GPL-3.0 许可证

300KB
7K SLoC

网络和通用IO模块。

创建网络服务和添加IO处理器的示例用法

extern crate network as net;
extern crate vapcore_network_devp2p as devp2p;
use net::*;
use devp2p::NetworkService;
use std::sync::Arc;
use std::time::Duration;

struct MyHandler;

impl NetworkProtocolHandler for MyHandler {
   	fn initialize(&self, io: &NetworkContext) {
   		io.register_timer(0, Duration::from_secs(1));
   	}

   	fn read(&self, io: &NetworkContext, peer: &PeerId, packet_id: u8, data: &[u8]) {
   		println!("Received {} ({} bytes) from {}", packet_id, data.len(), peer);
   	}

   	fn connected(&self, io: &NetworkContext, peer: &PeerId) {
   		println!("Connected {}", peer);
   	}

   	fn disconnected(&self, io: &NetworkContext, peer: &PeerId) {
   		println!("Disconnected {}", peer);
   	}
}

fn main () {
	let mut service = NetworkService::new(NetworkConfiguration::new_local(), None).expect("Error creating network service");
	service.start().expect("Error starting service");
	service.register_protocol(Arc::new(MyHandler), *b"myp", &[(1u8, 1u8)]);

	// Wait for quit condition
	// ...
	// Drop the service
}

依赖项

~14–23MB
~325K SLoC