network_communicator/
lib.rs

1//! # Description
2//! Creates thread pool for downloading content.
3//! It's provides channel for sending requests and receiving results.
4//!
5//! # Example
6//! 
7
8//!```no_run
9//! extern crate network_communicator;
10//! extern crate curl;
11//! use network_communicator::NetworkManagerHandle;
12//! use network_communicator::NetworkManager;
13//! use network_communicator::Config;
14//! use network_communicator::Task;
15//! use std::sync::{Arc,Mutex};
16//! 
17//! struct Payload {
18//! 	input: Arc<Mutex<Vec<u8>>>,
19//! }
20//! 
21//! impl Payload {
22//! 	fn new() -> Payload {
23//! 		Payload {
24//! 			input: Arc::new(Mutex::new(vec![])),
25//! 		}
26//! 	}
27//! }
28//! 
29//! fn network_manager() -> NetworkManagerHandle<Payload,()> {
30//! 	let mut config = Config::new(1).expect("Unable to create config");
31//! 	config.set_limit_task_channel(10000).unwrap();
32//! 	config.set_limit_result_channel(10000).unwrap();
33//! 	let manager = NetworkManager::start(&config).expect("Unable to create network manager");	
34//! 	return manager;
35//! }
36//! 
37//! fn get_request(url:&str) -> Task<Payload,()> {
38//! 	let url = String::from(url);
39//! 	Task::new(Payload::new(),move |payload,request|{
40//! 		let payload_input = payload.input.clone();
41//! 		request.url(&url)?;
42//! 		request.write_function(move |data| {
43//! 			payload_input.lock().unwrap().extend_from_slice(data);
44//! 			Ok(data.len())
45//! 		})?;
46//! 		Ok(())
47//! 	})
48//! }
49//! 
50//! let manager = network_manager();
51//! manager.send(get_request("https://github.com")).expect("Unable to send request");
52//! manager.send(get_request("https://rust-lang.org")).expect("Unable to send request");
53//!```
54extern crate tokio_core;
55extern crate tokio_curl;
56extern crate futures;
57extern crate curl;
58#[macro_use]
59extern crate quick_error;
60mod request;
61mod request_future;
62mod manager;
63mod task;
64mod config;
65mod error;
66use self::request::RequestDownloader;
67pub use self::request::RequestDownloaderResult;
68pub use self::task::Task;
69pub use self::manager::NetworkManager;
70pub use self::manager::NetworkManagerHandle;
71pub use self::error::Error;
72pub use self::config::{Config,ConfigError};