use log::*;
use std::sync::{Arc, Mutex};
use std::thread;
use std::time::Duration;
use twsapi::core::client::EClient;
use twsapi::core::{errors::*, streamer::TcpStreamer};
use twsapi::examples::test_helpers::TestWrapper;
pub fn main() -> Result<(), IBKRApiLibError> {
match log4rs::init_file("./log_config.yml", Default::default()) {
Ok(_) => (),
Err(_) => {
return Err(IBKRApiLibError::ApiError(TwsApiReportableError::new(
-1,
"-1".to_string(),
"Failed to create logger!!".to_string(),
)))
}
};
let wrapper = Arc::new(Mutex::new(TestWrapper::<TcpStreamer>::new()));
let app = Arc::new(Mutex::new(EClient::new(wrapper.clone())));
info!("getting connection...");
wrapper.lock().expect("Wrapper mutex was poisoned").client = Option::from(app.clone());
app.lock()
.expect("EClient mutex was poisoned")
.connect("127.0.0.1", 4002, 0)?;
thread::sleep(Duration::new(2, 0));
Ok(())
}