Expand description
§Description
Creates thread pool for downloading content. It’s provides channel for sending requests and receiving results.
§Example
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(())
})
}
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");
Structs§
- Config
- Structure for configuration.
- Network
Manager - Manager for processsing request.
- Network
Manager Handle - Handle for working with network manager.
Enums§
- Config
Error - Errors in configuration.
- Error
- Errors during starting download manager or processing request.
- Task
- Task for network manager.
Type Aliases§
- Request
Downloader Result - Result of working network manager.