summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShaun Taheri <shaun@advancedtelematic.com>2016-08-11 17:45:43 +0200
committerShaun Taheri <shaun@advancedtelematic.com>2016-08-11 17:45:43 +0200
commite8ce40065eb1797a6693cbe8ff08974c227fcc68 (patch)
tree22720fa62eb7266fef603cac4f76ed10d97537e5 /src
parentd6236f9a7f85bcf0ccb23e4cd64ee7c697c8ed24 (diff)
downloadrvi_sota_client-e8ce40065eb1797a6693cbe8ff08974c227fcc68.tar.gz
Queue next GetPendingUpdates only after response
Diffstat (limited to 'src')
-rw-r--r--src/main.rs15
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();