Crate ethcore_io[−][src]
General IO module.
Example usage for creating a network service and adding an IO handler:
extern crate ethcore_io; use ethcore_io::*; use std::sync::Arc; use std::time::Duration; struct MyHandler; #[derive(Clone)] struct MyMessage { data: u32 } impl IoHandler<MyMessage> for MyHandler { fn initialize(&self, io: &IoContext<MyMessage>) { io.register_timer(0, Duration::from_secs(1)).unwrap(); } fn timeout(&self, _io: &IoContext<MyMessage>, timer: TimerToken) { println!("Timeout {}", timer); } fn message(&self, _io: &IoContext<MyMessage>, message: &MyMessage) { println!("Message {}", message.data); } } fn main () { let mut service = IoService::<MyMessage>::start().expect("Error creating network service"); service.register_handler(Arc::new(MyHandler)).unwrap(); // Wait for quit condition // ... // Drop the service }
Mio vs non-mio
This library has two modes: mio and not mio. The mio
feature can be activated or deactivated
when compiling or depending on the library.
Without mio, only timers and message-passing are available. With mio, you can also use low-level sockets provided by mio.
The non-mio mode exists because the mio
library doesn't compile on platforms such as
emscripten.
Structs
IoChannel |
Allows sending messages into the event loop. All the IO handlers will get the message
in the |
IoContext |
IO access point. This is passed to all IO handlers and provides an interface to the IO subsystem. |
IoService |
General IO Service. Starts an event loop and dispatches IO requests. 'Message' is a notification message type |
Enums
IoError |
IO Error |
Constants
LOCAL_STACK_SIZE |
Stack size Should be modified if it is changed in Rust since it is no way to know or get it |
TOKENS_PER_HANDLER |
Maximum number of tokens a handler can use |
Traits
IoHandler |
Generic IO handler.
All the handler function are called from within IO event loop.
|
Type Definitions
TimerToken |
Timer ID |