messenger 0.1.0

two way messenger
use futures::Future;
use futures::sync::mpsc::unbounded;

use super::Messenger;

#[inline]
pub fn unbounded_channel<T: 'static>() -> (
    Messenger<T>,
    Messenger<T>,
    impl Future<Item = (), Error = ()>,
) {
    let (server_sender, server_receiver) = unbounded();
    let (client_sender, client_receiver) = unbounded();

    let (server, server_future) = Messenger::new(server_sender, client_receiver);
    let (client, client_future) = Messenger::new(client_sender, server_receiver);

    let future = server_future
        .join(client_future)
        .map(|_| ())
        .map_err(|_| ());

    (server, client, future)
}