use std::str;
use std::thread::sleep;
use std::time::Duration;
use std::process::exit;
#[macro_use]
extern crate log;
extern crate env_logger;
extern crate rocket_sync;
extern crate rocket_client;
use rocket_sync::{SyncDevice, SyncTrack};
use rocket_client::SyncClient;
fn main() {
env_logger::init().unwrap();
info!("main: started");
let mut rocket: SyncClient = match SyncClient::new("localhost:1338") {
Ok(x) => { info!("Connected to Rocket"); x },
Err(_) => { println!("Couldn't connect to Rocket"); exit(2); },
};
let track_names = vec![
"group0#track0".to_owned(),
"group0#track1".to_owned(),
"group0#track2".to_owned(),
"group1#track0".to_owned(),
"group1#track1".to_owned(),
"group1#track2".to_owned(),
];
rocket.send_track_names(&track_names).unwrap();
let mut sync_device: SyncDevice = SyncDevice::new(125.0, 8);
sync_device.is_paused = true;
for _ in track_names.iter() {
sync_device.tracks.push(SyncTrack::new());
}
loop {
match rocket.update(&mut sync_device) {
Ok(_) => {},
Err(err) => {
let msg: &str = &format!("{:?}", err);
if msg.contains("kind: UnexpectedEof") {
println!("Rocket disconnected. Exiting.");
exit(2);
} else {
error!("{}", msg);
}
},
}
if !sync_device.is_paused {
match rocket.send_row(&mut sync_device) {
Ok(_) => {},
Err(e) => warn!("{:?}", e),
}
}
println!("Row: {}, Time: {}", sync_device.row, sync_device.time);
for (idx, track) in sync_device.tracks.iter().enumerate() {
println!("Track {} : {:>10.5}", track_names[idx], track.value_at(sync_device.row));
}
if !sync_device.is_paused {
sync_device.time += 16; sync_device.set_row_from_time();
}
sleep(Duration::from_millis(16));
}
}