nexus 0.0.1

A high performance networking library
Documentation
use protocol::{Protocol};
use tcp::TcpProtocol;
use mio::tcp::TcpStream;
use mio::{Token, EventSet};
use reactor::{Configurer, ReactorError};
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::{Arc};

#[derive(Debug, Clone)]
pub struct FakeTcpProtocol {
    connect_count: Arc<AtomicUsize>,
}

impl FakeTcpProtocol {
    pub fn new() -> FakeTcpProtocol {
        FakeTcpProtocol{
            connect_count: Arc::new(AtomicUsize::new(0)),
        }
    }

    pub fn connect_count(&self) -> usize {
        self.connect_count.load(Ordering::SeqCst)
    }
}

impl Protocol for FakeTcpProtocol {
    type Socket = TcpStream;

    fn on_readable(&mut self, _configurer: &mut Configurer<Self::Socket>, _socket: &mut Self::Socket, _token: Token) {
    }

    fn on_writable(&mut self, _configurer: &mut Configurer<Self::Socket>, _socket: &mut Self::Socket, _token: Token) {
    }

    fn on_timeout(&mut self, _configurer: &mut Configurer<Self::Socket>, _socket: &mut Self::Socket, _token: Token) {
    }

    fn on_disconnect(&mut self, _configurer: &mut Configurer<Self::Socket>, _socket: &mut Self::Socket, _token: Token) {
    }

    fn on_socket_error(&mut self, _configurer: &mut Configurer<Self::Socket>, _socket: &mut Self::Socket, _token: Token) {
    }

    fn on_event_loop_error(&mut self, error: ReactorError<Self::Socket>) {
        panic!("event loop error: {:?}", error);
    }

    fn tick(&mut self, _configurer: &mut Configurer<Self::Socket>) {
    }
}

impl TcpProtocol for FakeTcpProtocol {
    fn on_connect(&mut self, configurer: &mut Configurer<Self::Socket>, socket: TcpStream) {
        self.connect_count.fetch_add(1, Ordering::SeqCst);
        configurer.add_socket(socket, EventSet::readable());
    }
}