From 36134678f5e1d62d4320d833bf57900b9c2bce3d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 15 Mar 2024 09:34:21 -0700 Subject: [PATCH] Fix build of spin-timer example Signed-off-by: Alex Crichton --- examples/spin-timer/src/lib.rs | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/examples/spin-timer/src/lib.rs b/examples/spin-timer/src/lib.rs index b7750d0ab0..15423b645d 100644 --- a/examples/spin-timer/src/lib.rs +++ b/examples/spin-timer/src/lib.rs @@ -1,10 +1,11 @@ use std::collections::HashMap; +use anyhow::Context; use clap::Args; use serde::{Deserialize, Serialize}; -use spin_app::MetadataKey; -use spin_core::async_trait; -use spin_trigger::{EitherInstance, TriggerAppEngine, TriggerExecutor}; +use spin_app::{AppComponent, MetadataKey}; +use spin_core::{async_trait, Engine, Instance, InstancePre, Store}; +use spin_trigger::{TriggerAppEngine, TriggerExecutor}; wasmtime::component::bindgen!({ path: ".", @@ -62,6 +63,10 @@ impl TriggerExecutor for TimerTrigger { type RunConfig = CliArgs; + type InstancePre = InstancePre; + + type Instance = Instance; + async fn new(engine: spin_trigger::TriggerAppEngine) -> anyhow::Result { let speedup = engine .app() @@ -113,15 +118,30 @@ impl TriggerExecutor for TimerTrigger { } Ok(()) } + + async fn instantiate_pre( + engine: &Engine, + component: &AppComponent, + _config: &TimerTriggerConfig, + ) -> anyhow::Result> { + let comp = component.load_component(engine).await?; + Ok(engine + .instantiate_pre(&comp) + .with_context(|| format!("Failed to instantiate component '{}'", component.id()))?) + } + + async fn instantiate( + store: &mut Store, + pre: &Self::InstancePre, + ) -> anyhow::Result { + pre.instantiate_async(store).await + } } impl TimerTrigger { 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 { - unreachable!() - }; let instance = SpinTimer::new(&mut store, &instance)?; // ...and call the entry point instance.call_handle_timer_request(&mut store).await