diff --git a/updatehub-sdk/src/listener.rs b/updatehub-sdk/src/listener.rs index 6983d51e..83265829 100644 --- a/updatehub-sdk/src/listener.rs +++ b/updatehub-sdk/src/listener.rs @@ -19,6 +19,7 @@ type CallbackFn = dyn Fn(Handler) -> Pin>>>; #[derive(Default)] pub struct StateChangeListener { + probe_callbacks: Vec>, download_callbacks: Vec>, install_callbacks: Vec>, reboot_callbacks: Vec>, @@ -27,6 +28,7 @@ pub struct StateChangeListener { #[derive(Debug)] pub enum State { + Probe, Download, Install, Reboot, @@ -63,6 +65,7 @@ impl StateChangeListener { Fut: Future> + 'static, { match state { + State::Probe => self.probe_callbacks.push(Box::new(move |d| Box::pin(f(d)))), State::Download => self.download_callbacks.push(Box::new(move |d| Box::pin(f(d)))), State::Install => self.install_callbacks.push(Box::new(move |d| Box::pin(f(d)))), State::Reboot => self.reboot_callbacks.push(Box::new(move |d| Box::pin(f(d)))), @@ -100,6 +103,7 @@ impl StateChangeListener { async fn emit(&self, stream: UnixStream, input: &str) -> Result<()> { let callbacks = match input { + "probe" => &self.probe_callbacks, "download" => &self.download_callbacks, "install" => &self.install_callbacks, "reboot" => &self.reboot_callbacks,