1 个稳定版本

1.12.0 2022 年 10 月 19 日

#82#mio

GPL-3.0 许可证

41KB
901

通用 IO 模块。

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

extern crate ethcore_io;
use ethcore_io::*;
use std::sync::Arc;
use std::time::Duration;

struct MyHandler;

#[derive(Clone)]
struct MyMessage {
	data: u32
}

impl IoHandler<MyMessage> for MyHandler {
	fn initialize(&self, io: &IoContext<MyMessage>) {
   		io.register_timer(0, Duration::from_secs(1)).unwrap();
   	}

   	fn timeout(&self, _io: &IoContext<MyMessage>, timer: TimerToken) {
   		println!("Timeout {}", timer);
   	}

   	fn message(&self, _io: &IoContext<MyMessage>, message: &MyMessage) {
   		println!("Message {}", message.data);
   	}
}

fn main () {
	let mut service = IoService::<MyMessage>::start().expect("Error creating network service");
	service.register_handler(Arc::new(MyHandler)).unwrap();

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

Mio 与非 Mio

此库有两种模式:mio 和非 mio。在编译或依赖库时可以启用或禁用 mio 功能。

在没有 mio 的情况下,只有计时器和消息传递可用。使用 mio 时,还可以使用 mio 提供的低级套接字。

非 mio 模式存在的原因是 mio 库无法在 emscripten 等平台上编译。

依赖项

~7MB
~104K SLoC