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};