#async-io #events #libevent #event-system

td_revent

Rust的事件库,类似于libevent的异步I/O

13个版本

使用旧的Rust 2015

0.3.2 2022年5月13日
0.2.2 2018年4月19日
0.2.1 2017年12月19日
0.2.0 2017年10月27日
0.1.0 2016年3月31日

#5 in #libevent

Download history 1/week @ 2024-03-08 6/week @ 2024-03-15 4/week @ 2024-03-22 37/week @ 2024-03-29 1/week @ 2024-04-05

54 每月下载量
用于 2 crates

MIT/Apache

130KB
3K SLoC

事件 - 类似于libevent的异步I/O

Event是一个针对Rust的轻量级IO库,重点在于尽可能减少对操作系统抽象的额外开销。

Build Status

入门指南 目前正在进行中

##使用

要使用td_revent,首先将以下内容添加到您的Cargo.toml中

[dependencies]
td_revent = "0.3.0"

然后,将以下内容添加到您的crate根目录中

extern crate td_revent;

添加空事件只需这样做

extern crate td_revent;
use td_revent::EventLoop;

fn main() {
    let mut event_loop = EventLoop::new().unwrap();
    event_loop.run();
}

添加简单计时器事件只需这样做

extern crate td_revent;
use td_revent::{EventLoop, EventEntry, EventFlags};
use std::ptr;

fn time_callback(ev : &mut EventLoop, fd : u64, _ : EventFlags, data : *mut ()) -> i32 {
    println!("fd is {:?}", fd);
    //return 0 status ok other will delete the timer
    0
}

pub fn main() {
    let mut event_loop : EventLoop = EventLoop::new().unwrap();
    event_loop.add_timer(EventEntry::new_timer(100, false, Some(time_callback), None));
    event_loop.add_timer(EventEntry::new_timer(200, true, Some(time_callback), None));
    event_loop.run().unwrap();
}

##特性

基于epoll的事件循环,Windows使用select。非阻塞TCP套接字高性能计时系统

##平台 目前,td_revent仅支持Linux和Windows。目标是支持所有支持Rust和就绪IO模型的平台。

依赖项

~3MB
~62K SLoC