summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/core/tedge_api/examples/heartbeat.rs7
-rw-r--r--crates/core/tedge_api/src/plugins.rs5
2 files changed, 7 insertions, 5 deletions
diff --git a/crates/core/tedge_api/examples/heartbeat.rs b/crates/core/tedge_api/examples/heartbeat.rs
index 80f8b10e..7776e488 100644
--- a/crates/core/tedge_api/examples/heartbeat.rs
+++ b/crates/core/tedge_api/examples/heartbeat.rs
@@ -8,19 +8,20 @@ use tedge_api::{
struct HeartbeatServiceBuilder;
+#[async_trait]
impl PluginBuilder for HeartbeatServiceBuilder {
fn name(&self) -> &'static str {
todo!()
}
- fn verify_configuration(
+ async fn verify_configuration(
&self,
_config: &PluginConfiguration,
) -> Result<(), tedge_api::errors::PluginError> {
Ok(())
}
- fn instantiate(
+ async fn instantiate(
&self,
config: PluginConfiguration,
tedge_comms: tedge_api::plugins::Comms,
@@ -89,7 +90,7 @@ async fn main() {
)
.unwrap();
- let mut heartbeat = hsb.instantiate(config, comms).unwrap();
+ let mut heartbeat = hsb.instantiate(config, comms).await.unwrap();
heartbeat.setup().await.unwrap();
diff --git a/crates/core/tedge_api/src/plugins.rs b/crates/core/tedge_api/src/plugins.rs
index cb1710be..78cb3356 100644
--- a/crates/core/tedge_api/src/plugins.rs
+++ b/crates/core/tedge_api/src/plugins.rs
@@ -36,18 +36,19 @@ impl Comms {
pub type PluginConfiguration = toml::Spanned<toml::value::Value>;
/// A plugin builder for a given plugin
+#[async_trait]
pub trait PluginBuilder: Sync + Send + 'static {
/// The name of the plugins this creates, this should be unique and will prevent startup otherwise
fn name(&self) -> &'static str;
/// This may be called anytime to verify whether a plugin could be instantiated with the
/// passed configuration.
- fn verify_configuration(&self, config: &PluginConfiguration) -> Result<(), PluginError>;
+ async fn verify_configuration(&self, config: &PluginConfiguration) -> Result<(), PluginError>;
/// Instantiate a new instance of this plugin using the given configuration
///
/// This _must not_ block
- fn instantiate(
+ async fn instantiate(
&self,
config: PluginConfiguration,
tedge_comms: Comms,