diff options
author | Shaun Taheri <shaun@advancedtelematic.com> | 2016-08-11 17:45:43 +0200 |
---|---|---|
committer | Shaun Taheri <shaun@advancedtelematic.com> | 2016-08-11 17:45:43 +0200 |
commit | e8ce40065eb1797a6693cbe8ff08974c227fcc68 (patch) | |
tree | 22720fa62eb7266fef603cac4f76ed10d97537e5 /src | |
parent | d6236f9a7f85bcf0ccb23e4cd64ee7c697c8ed24 (diff) | |
download | rvi_sota_client-e8ce40065eb1797a6693cbe8ff08974c227fcc68.tar.gz |
Queue next GetPendingUpdates only after response
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index e727b95..d0cac38 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,11 +45,16 @@ fn start_signal_handler(signals: Receiver<Signal>) { } } -fn start_update_poller(interval: u64, ctx: Sender<Command>) { - let tick = chan::tick(Duration::from_secs(interval)); +fn start_update_poller(interval: u64, itx: Sender<Interpret>) { + let (etx, erx) = chan::async::<Event>(); + let tick = chan::tick(Duration::from_secs(interval)); loop { let _ = tick.recv(); - ctx.send(Command::GetPendingUpdates); + itx.send(Interpret { + command: Command::GetPendingUpdates, + response_tx: Some(Arc::new(Mutex::new(etx.clone()))) + }); + let _ = erx.recv(); } } @@ -78,8 +83,8 @@ fn main() { scope.spawn(move || start_signal_handler(signals)); let poll_tick = config.device.polling_interval; - let poll_ctx = ctx.clone(); - scope.spawn(move || start_update_poller(poll_tick, poll_ctx)); + let poll_itx = itx.clone(); + scope.spawn(move || start_update_poller(poll_tick, poll_itx)); if config.gateway.console { let cons_itx = itx.clone(); |