4个版本 (稳定)
1.3.0 | 2022年1月30日 |
---|---|
1.2.0 | 2022年1月30日 |
1.1.0 | 2022年1月30日 |
0.1.0 | 2022年1月30日 |
#829 in Unix API
8KB
124 行
Copoll
Copoll或Cool Poll是对Linux epoll API的抽象,使其在轮询文件描述符时稍微容易一些。它不提供像mio或calloop那样的事件循环。因为创建此库的整个目的就是留给用户。
文档
示例
use copoll::{Interest, Mode, Token, Epoll, Event, Events};
use std::os::unix::{net::UnixListener, io::AsRawFd};
use std::time::Duration;
const LISTENER: Token = Token(0);
fn main() {
let mut epoll = Epoll::create().unwrap();
let mut listener = UnixListener::bind("test.sock").unwrap();
epoll.register(listener.as_raw_fd(), LISTENER, Interest::Both, Mode::Edge).unwrap();
loop {
let mut events = epoll.poll(Some(Duration::from_millis(2000))).unwrap();
for event in events.iter() {
// Handle the event, read from the socket
// respond to it etc
// Here you could also use the utility functions provided in copoll::event;
// example just breaks on first event
break;
}
}
}
依赖
~1.5MB
~36K SLoC