msgpacknet 0.1.0

A networking layer based on MessagePack messages.
Documentation
#![feature(test)]
extern crate test;
extern crate msgpacknet;

use msgpacknet::*;
use test::Bencher;

#[bench]
fn node_send_self(b: &mut Bencher) {
    let node = Node::new(0, 0);
    assert!(node.listen("localhost:0").is_ok());
    b.iter(|| {
        assert!(node.send(&0, &42).is_ok());
        assert_eq!(node.receive(), Event::Message(0, 42))
    });
    assert!(!node.is_connected(&0));
}

#[bench]
fn node_send_remote(b: &mut Bencher) {
    let server = Node::<u64, u64, u64>::new(0, 0);
    assert!(server.listen("localhost:0").is_ok());
    let client = Node::new(1, 1);
    assert!(client.listen("localhost:0").is_ok());
    assert!(client.connect(server.addresses()[0]).is_ok());
    if let Event::ConnectionRequest(req) = server.receive() {
        req.accept();
    } else {
        assert!(false);
    }
    assert_eq!(client.receive(), Event::Connected(0));
    assert_eq!(server.receive(), Event::Connected(1));
    b.iter(|| {
        assert!(client.send(&0, &42).is_ok());
        assert_eq!(server.receive(), Event::Message(1, 42))
    });
}