Compare commits
1 Commits
d67bed6bbf
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2995710e59 |
@@ -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<Message>,
|
||||
sender_id: SenderID,
|
||||
}
|
||||
|
||||
impl Clock {
|
||||
fn new(queue: Queue, rx: Receiver<Message>) -> Self {
|
||||
fn new(queue: Queue, rx: Receiver<Message>, 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::*;
|
||||
|
||||
Reference in New Issue
Block a user