1 个稳定版本
1.12.0 | 2022 年 10 月 19 日 |
---|
#82 在 #mio
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