显示包…
1 个稳定版本
1.12.0 | 2021年2月28日 |
---|
#4 在 #vapcore
在 40 个包(14 个直接)中使用
41KB
901 行
通用 IO 模块。
创建网络服务和添加 IO 处理器的示例用法
extern crate vapcore_io;
use vapcore_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