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

    struct MyHandler;

    #[derive(Clone)]
    struct MyMessage {
        data: u32
    }

    impl IoHandler<MyMessage> for MyHandler {
        fn initialize(&self, io: &IoContext<MyMessage>) {
            io.register_timer(0, 1000).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
    }

## Structs

IoChannel | Allows sending messages into the event loop. All the IO handlers will get the message in the `message` callback.
IoContext | IO access point. This is passed to all IO handlers and provides an interface to the IO subsystem.
IoManager | Root IO handler. Manages user handlers, messages and IO timers.
IoService | General IO Service. Starts an event loop and dispatches IO requests. 'Message' is a notification message type
PanicHandler | Structure that allows to catch panics and notify listeners

## Enums

IoError | IO Error

## Constants

TOKENS_PER_HANDLER | Maximum number of tokens a handler can use

## Statics

LOCAL_STACK_SIZE | Stack size Should be modified if it is changed in Rust since it is no way to know or get it

## Traits

ForwardPanic | Forwards panics from child
IoHandler | Generic IO handler. All the handler function are called from within IO event loop. `Message` type is used as notification data
MayPanic | Trait indicating that the structure catches some of the panics (most probably from spawned threads) and it's possbile to be notified when one of the threads panics.
OnPanicListener | Thread-safe closure for handling possible panics

## Type Definitions

StreamToken | Timer ID
TimerToken | Timer ID

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)