Crate soio

Source
Expand description

A fast IO library for Rust focusing on non-blocking APIs, event notification, and other useful utilties for building high performance IO apps.

§Usage

First, add this to your Cargo.toml:

[dependencies]
soio = "0.1"

Then, add this to your crate root:

extern crate soio;

§Example

use soio::{Events, Poll, Ready, PollOpt, Token};
use soio::tcp::{TcpListener, TcpStream};

// Setup some tokens to allow us to identify which event is
// for which socket.
const SERVER: Token = Token(0);
const CLIENT: Token = Token(1);

// Setup the server socket
let server = TcpListener::bind("127.0.0.1:13265").unwrap();

// Create an poll instance
let poll = Poll::new().unwrap();

// Start listening for incoming connections
poll.register(&server, SERVER, Ready::readable(),
              PollOpt::edge()).unwrap();

// Setup the client socket
let sock = TcpStream::connect("127.0.0.1:13265").unwrap();

// Register the socket
poll.register(&sock, CLIENT, Ready::readable(),
              PollOpt::edge()).unwrap();

// Create storage for events
let mut events = Events::with_capacity(1024);

loop {
    poll.poll(&mut events, None).unwrap();

    for event in events.iter() {
        match event.token() {
            SERVER => {
                // Accept and drop the socket immediately, this will close
                // the socket and notify the client of the EOF.
                let _ = server.accept();
            }
            CLIENT => {
                // The server just shuts down the socket, let's just exit
                // from our event loop.
                return;
            }
            _ => unreachable!(),
        }
    }
}

Modules§

channel
Thread safe communication channel implementing Evented
tcp
Primitives for working with TCP
udp
Primitives for working with UDP

Structs§

Event
An readiness event returned by Poll::poll.
EventedFd
Adapter for RawFd providing an Evented implementation.
Events
A collection of readiness events.
IoVec
A specialized byte slice type for performing vector reads and writes.
Poll
Polls for readiness events on all registered values.
PollOpt
Options supplied when registering an Evented handle with Poll
Ready
A set of readiness event kinds
Registration
Handle to a user space Poll registration.
SetReadiness
Updates the readiness state of the associated Registration.
Token
Associates readiness notifications with Evented handles.

Traits§

Evented
A value that may be registered with Poll