From e0a47a271f46b5a9e6b6c265518b1f46fff95800 Mon Sep 17 00:00:00 2001 From: ysq Date: Wed, 9 Jul 2025 22:54:25 +0800 Subject: [PATCH] feat: add SubscriptionHandle for managing subscription lifecycle - Add SubscriptionHandle struct to manage async subscription tasks - Implement graceful shutdown mechanism with unsub_fn callback - Export new module in common/mod.rs - Support for proper resource cleanup in subscription management --- src/common/mod.rs | 1 + src/common/subscription_handle.rs | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 src/common/subscription_handle.rs diff --git a/src/common/mod.rs b/src/common/mod.rs index 26b8bc0..5d8d161 100755 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -3,5 +3,6 @@ pub mod nonce_cache; pub mod tip_cache; pub mod types; pub mod address_lookup_cache; +pub mod subscription_handle; pub use types::*; diff --git a/src/common/subscription_handle.rs b/src/common/subscription_handle.rs new file mode 100644 index 0000000..e9395fa --- /dev/null +++ b/src/common/subscription_handle.rs @@ -0,0 +1,13 @@ +use tokio::task::JoinHandle; + +pub struct SubscriptionHandle { + pub task: JoinHandle<()>, + pub unsub_fn: Box, +} + +impl SubscriptionHandle { + pub async fn shutdown(self) { + (self.unsub_fn)(); + self.task.abort(); + } +}