1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use crate::proxy::Proxy;
use crate::initdata::InitializationData;
use crate::errors::PropertyError;
pub struct Communicator {
init_data: InitializationData
}
impl Communicator {
pub fn new() -> Communicator {
Communicator {
init_data: InitializationData::new()
}
}
pub fn string_to_proxy(&self, proxy_string: &str) -> Result<Proxy, Box<dyn std::error::Error>> {
Proxy::new(proxy_string, &self.init_data.properties)
}
pub fn property_to_proxy(&self, property: &str) -> Result<Proxy, Box<dyn std::error::Error>> {
match self.init_data.properties.get(property) {
Some(value) => {
Proxy::new(value, &self.init_data.properties)
}
None => {
Err(Box::new(PropertyError {}))
}
}
}
}
pub fn initialize(config_file: &str) -> Communicator {
let mut init_data = InitializationData::new();
init_data.properties.load(config_file).unwrap();
Communicator{
init_data: init_data,
}
}