显示包…

1 个稳定版本

1.12.0 2021年2月28日

#4#vapcore


40 个包(14 个直接)中使用

GPL-3.0 许可证

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