Skip to content

Commit

Permalink
Updated return variant and unused expression.
Browse files Browse the repository at this point in the history
Signed-off-by: Suneet Nangia <[email protected]>
  • Loading branch information
suneetnangia committed Apr 17, 2023
1 parent 609168f commit 3c11659
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
6 changes: 3 additions & 3 deletions examples/spin-timer/app-example/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}

Expand Down
9 changes: 8 additions & 1 deletion examples/spin-timer/spin-timer.wit
Original file line number Diff line number Diff line change
@@ -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
}
19 changes: 9 additions & 10 deletions examples/spin-timer/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
}
});
Expand All @@ -129,7 +128,7 @@ impl TriggerExecutor for TimerTrigger {
}

impl TimerTrigger {
async fn handle_timer_event(&self, component_id: &str) -> anyhow::Result<bool> {
async fn handle_timer_event(&self, component_id: &str) -> anyhow::Result<ContinueTimer> {
// Load the guest...
let (instance, mut store) = self.engine.prepare_instance(component_id).await?;
let EitherInstance::Component(instance) = instance else {
Expand Down

0 comments on commit 3c11659

Please sign in to comment.