network-communicator 0.1.1

Network manager for download/upload content based on tokio-curl crate using HTTP protocol
Documentation
extern crate network_communicator;
extern crate curl;
use network_communicator::NetworkManagerHandle;
use network_communicator::NetworkManager;
use network_communicator::Config;
use network_communicator::Task;
use std::sync::{Arc,Mutex};

struct Payload {
	input: Arc<Mutex<Vec<u8>>>,
}

impl Payload {
	fn new() -> Payload {
		Payload {
			input: Arc::new(Mutex::new(vec![])),
		}
	}
}

fn network_manager() -> NetworkManagerHandle<Payload,()> {
	let mut config = Config::new(1).expect("Unable to create config");
	config.set_limit_task_channel(10000).unwrap();
	config.set_limit_result_channel(10000).unwrap();
	let manager = NetworkManager::start(&config).expect("Unable to create network manager");	
	return manager;
}

fn get_request(url:&str) -> Task<Payload,()> {
	let url = String::from(url);
	Task::new(Payload::new(),move |payload,request|{
		let payload_input = payload.input.clone();
		request.url(&url)?;
		request.write_function(move |data| {
			payload_input.lock().unwrap().extend_from_slice(data);
			Ok(data.len())
		})?;
		Ok(())
	})
}

#[test]
pub fn test_drop_network_manager_1() {
	let manager = network_manager();
	manager.send(get_request("https://github.com")).expect("Unable to send request");
	manager.send(get_request("https://rust-lang.org")).expect("Unable to send request");
}

#[test]
pub fn test_drop_network_manager_2() {
	let manager = network_manager();
	manager.send(get_request("https://github.com")).expect("Unable to send request");
	let result_1 = manager.recv();
	assert!(result_1.is_ok());
	assert!(result_1.unwrap().is_ok());
	manager.send(get_request("https://google.com")).expect("Unable to send request");
	let result_2 = manager.recv();
	assert!(result_2.is_ok());
	assert!(result_2.unwrap().is_ok());
}

#[test]
pub fn test_drop_network_manager_3() {
	let manager = network_manager();
	manager.send(get_request("https://github.com")).expect("Unable to send request");
	manager.send(get_request("https://google.com")).expect("Unable to send request");
	let result_1 = manager.recv();
	assert!(result_1.is_ok());
	assert!(result_1.unwrap().is_ok());
	let result_2 = manager.recv();
	assert!(result_2.is_ok());
	assert!(result_2.unwrap().is_ok());
}