network-communicator 0.1.1

Network manager for download/upload content based on tokio-curl crate using HTTP protocol
Documentation
use curl::easy::Easy;
use request::RequestDownloader;
use futures::Poll;
use futures::Async;
use futures::Future;
use tokio_curl::PerformError;

pub enum RequestFuture<T: Send + 'static,E: Send + 'static> {
	Process(RequestDownloader<T,E>),
	Ready,
}

pub enum RequestFutureItem {
	Process(Easy),
	Ready,
}


impl <T: Send + 'static,E: Send + 'static>Future for RequestFuture<T,E> {
	type Item = RequestFutureItem;
    type Error = PerformError;

    fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
    	match self {
    		&mut RequestFuture::Process(ref mut result) => {
    			return result.poll().map(
    				|result|{
    					return result.map(|item|{
    						RequestFutureItem::Process(item)
    					})
    				}
				);
    		},
			&mut RequestFuture::Ready => {
				return Ok(Async::Ready(RequestFutureItem::Ready));
			}
    	}
    }
}