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
. - Evented
Fd - Adapter for
RawFd
providing anEvented
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 withPoll
- 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