Expand description

Network and general IO module.

Example usage for creating a network service and adding an IO handler:

extern crate ethcore_network as net;
extern crate ethcore_network_devp2p as devp2p;
extern crate ethereum_types as types;
use net::*;
use devp2p::NetworkService;
use std::sync::Arc;
use std::time::Duration;
use types::U64;

struct MyHandler;

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

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

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

	fn disconnected(&self, io: &dyn 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), U64::from(0x000aaa00), &[(1u8, 1u8)]);

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

Structs

IO access point. This is passed to all IO handlers and provides an interface to the IO subsystem.

IO Service with networking Message defines a notification data type.

Constants

Network responses should try not to go over this limit. This should be lower than MAX_PAYLOAD_SIZE

Functions

Check if node url is valid

Type Definitions

Node public key

Timer ID