Crate soio [] [src]

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);

let addr = "127.0.0.1:13265".parse().unwrap();

// Setup the server socket
let server = TcpListener::bind(&addr).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(&addr).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.

EventLoop
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

Handler