Function split

Source
pub fn split<S: Send>() -> (NodeHandler<S>, NodeListener<S>)
Expand description

Creates a node already working. This function offers two instances: a NodeHandler to perform network and signals actions and a NodeListener to receive the events the node receives.

Note that NodeListener is already listen for events from its creation. In order to get the listened events you can call NodeListener::for_each() Any event happened before for_each() call will be also dispatched.

§Examples

use message_io::node::{self, NodeEvent};

enum Signal {
    Close,
    Tick,
    //Other signals here.
}

let (handler, listener) = node::split();

handler.signals().send_with_timer(Signal::Close, std::time::Duration::from_secs(1));

listener.for_each(move |event| match event {
    NodeEvent::Network(_) => { /* ... */ },
    NodeEvent::Signal(signal) => match signal {
        Signal::Close => handler.stop(), //Received after 1 sec
        Signal::Tick => { /* ... */ },
    },
});

In case you don’t use signals, specify the node type with an unit (()) type.

use message_io::node::{self};

let (handler, listener) = node::split::<()>();