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

Apache-2.0

8KB
124

Copoll

Copoll或Cool Poll是对Linux epoll API的抽象,使其在轮询文件描述符时稍微容易一些。它不提供像mio或calloop那样的事件循环。因为创建此库的整个目的就是留给用户。

文档

Docs.rs

示例

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