From 3c116595abeedc1f52793fa0be01809bffb03404 Mon Sep 17 00:00:00 2001 From: Suneet Nangia Date: Mon, 17 Apr 2023 12:19:41 +0100 Subject: [PATCH] Updated return variant and unused expression. Signed-off-by: Suneet Nangia --- examples/spin-timer/app-example/src/lib.rs | 6 +++--- examples/spin-timer/spin-timer.wit | 9 ++++++++- examples/spin-timer/src/main.rs | 19 +++++++++---------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/spin-timer/app-example/src/lib.rs b/examples/spin-timer/app-example/src/lib.rs index b307b097c9..24ed18b592 100644 --- a/examples/spin-timer/app-example/src/lib.rs +++ b/examples/spin-timer/app-example/src/lib.rs @@ -6,12 +6,12 @@ wit_bindgen::generate!({ struct MySpinTimer; impl SpinTimer for MySpinTimer { - fn handle_timer_request() -> bool { + fn handle_timer_request() -> ContinueTimer { let text = spin_sdk::config::get("message").unwrap(); println!("{text}"); - // Return false if you want to exit the timer loop calling this funtion subsequently. - true + // Return ContinueTimer::True if you want to continue the timer loop calling this component/function subsequently. + ContinueTimer::True } } diff --git a/examples/spin-timer/spin-timer.wit b/examples/spin-timer/spin-timer.wit index 4c27984f6d..7f4e85a99a 100644 --- a/examples/spin-timer/spin-timer.wit +++ b/examples/spin-timer/spin-timer.wit @@ -1,3 +1,10 @@ default world spin-timer { - export handle-timer-request: func() -> bool + // Timer execution loop exit variant + variant continue-timer { + true, + false + } + + // Get the value of a key. + export handle-timer-request: func() -> continue-timer } diff --git a/examples/spin-timer/src/main.rs b/examples/spin-timer/src/main.rs index 80e535d4d8..b3bd137dcb 100644 --- a/examples/spin-timer/src/main.rs +++ b/examples/spin-timer/src/main.rs @@ -109,15 +109,14 @@ impl TriggerExecutor for TimerTrigger { let duration = tokio::time::Duration::from_millis(*d * 1000 / speedup); loop { tokio::time::sleep(duration).await; - self.handle_timer_event(c).await.unwrap(); - - // Inverse the control of breaking out of loop, let the component decide this by returning false. - let exit = !self.handle_timer_event(c).await.unwrap(); - - // Exit the loop if component asks for it. - if exit - { - break; + + // Inverse the control of breaking out of loop, let the component decide this by returning ContinueTimer enum. + let exit_condition = self.handle_timer_event(c).await.unwrap(); + + // Exit the loop if the component asks for it. + match exit_condition { + ContinueTimer::True => continue, + ContinueTimer::False => break, } } }); @@ -129,7 +128,7 @@ impl TriggerExecutor for TimerTrigger { } impl TimerTrigger { - async fn handle_timer_event(&self, component_id: &str) -> anyhow::Result { + async fn handle_timer_event(&self, component_id: &str) -> anyhow::Result { // Load the guest... let (instance, mut store) = self.engine.prepare_instance(component_id).await?; let EitherInstance::Component(instance) = instance else {