From 2995710e59f3e8b2214468c587bcda1be366f8da Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Wed, 13 May 2026 17:07:12 -0400 Subject: [PATCH] Added drop to clock. --- src/document/clock.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/document/clock.rs b/src/document/clock.rs index 46ff808..1907aa2 100644 --- a/src/document/clock.rs +++ b/src/document/clock.rs @@ -7,6 +7,7 @@ use crate::{ queue::{ data_director::{Include, Path, RegMsg, Register}, router::Queue, + SenderID, }, }; use chrono::{DateTime, Utc}; @@ -37,13 +38,15 @@ impl Pulser { pub struct Clock { queue: Queue, rx: Receiver, + sender_id: SenderID, } impl Clock { - fn new(queue: Queue, rx: Receiver) -> Self { + fn new(queue: Queue, rx: Receiver, id: SenderID) -> Self { Self { queue: queue, rx: rx, + sender_id: id, } } @@ -85,7 +88,7 @@ impl Clock { let reg_msg = Register::new(id.clone(), RegMsg::AddRoute(path.clone())); queue.send(Message::new(reg_msg)); rx.recv().unwrap(); // Wait for completion. - let clock = Clock::new(queue.clone(), rx); + let clock = Clock::new(queue.clone(), rx, id); spawn(move || { clock.listen(); }); @@ -100,6 +103,12 @@ impl Clock { } } +impl Drop for Clock { + fn drop(&mut self) { + self.queue.remove_sender(&self.sender_id); + } +} + #[cfg(test)] mod clocks { use super::*;