Skip to content

A safe high-level API for epoll in rust. (A project for learning)

Notifications You must be signed in to change notification settings

mohammedgqudah/rust-epoll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A safe high-level API for epoll(2)

This is one of my learning projects. Once the API is stable I will use it in my rust-http-server project.

Example

use epoll::events::Events;
use epoll::{Poll, PollEvent};


let mut events = Events::with_capacity(15); // epoll maxsize
let poll = Poll::default();

let listener = ...

poll.register(listener.as_raw_fd() as u64)?;

loop {
    println!("polling..");
    poll.poll(&mut events);

    for event in &mut events.events {
        if event.as_raw_fd() == listener.as_raw_fd() {
            // Connections are available.
            let fd = accept(listener.as_raw_fd());
            poll.register(fd);
        } else if event.is_closed() {
            // socket has closed
            println!("Connection closed..");
            poll.remove(event);
        } else if event.is_readable() {
            // socket is readable
            process_socket(event.as_raw_fd())
        } else {
            // Something else
        }
    }
}

About

A safe high-level API for epoll in rust. (A project for learning)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published