Compare commits

...

1 Commits

Author SHA1 Message Date
2995710e59 Added drop to clock.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2026-05-13 17:07:12 -04:00

View File

@@ -7,6 +7,7 @@ use crate::{
queue::{ queue::{
data_director::{Include, Path, RegMsg, Register}, data_director::{Include, Path, RegMsg, Register},
router::Queue, router::Queue,
SenderID,
}, },
}; };
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
@@ -37,13 +38,15 @@ impl Pulser {
pub struct Clock { pub struct Clock {
queue: Queue, queue: Queue,
rx: Receiver<Message>, rx: Receiver<Message>,
sender_id: SenderID,
} }
impl Clock { impl Clock {
fn new(queue: Queue, rx: Receiver<Message>) -> Self { fn new(queue: Queue, rx: Receiver<Message>, id: SenderID) -> Self {
Self { Self {
queue: queue, queue: queue,
rx: rx, rx: rx,
sender_id: id,
} }
} }
@@ -85,7 +88,7 @@ impl Clock {
let reg_msg = Register::new(id.clone(), RegMsg::AddRoute(path.clone())); let reg_msg = Register::new(id.clone(), RegMsg::AddRoute(path.clone()));
queue.send(Message::new(reg_msg)); queue.send(Message::new(reg_msg));
rx.recv().unwrap(); // Wait for completion. rx.recv().unwrap(); // Wait for completion.
let clock = Clock::new(queue.clone(), rx); let clock = Clock::new(queue.clone(), rx, id);
spawn(move || { spawn(move || {
clock.listen(); 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)] #[cfg(test)]
mod clocks { mod clocks {
use super::*; use super::*;