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); // 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 |
| tcp |
Primitives for working with TCP |
| udp |
Primitives for working with UDP |
Structs
| Event |
An readiness event returned by |
| EventLoop | |
| EventedFd | |
| 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 |
| Ready |
A set of readiness event kinds |
| Registration |
Handle to a user space |
| SetReadiness |
Updates the readiness state of the associated [ |
| Token |
Associates readiness notifications with |
Traits
| Evented |
A value that may be registered with |
| Handler |