diff --git a/src/client.rs b/src/client.rs index 2a0a9e8..8f106b4 100644 --- a/src/client.rs +++ b/src/client.rs @@ -27,12 +27,8 @@ impl ClientChannel { pub fn send(&self, mut msg: Message) -> Receiver { let mut reg = self.registry.lock().unwrap(); - if reg.contains_key(&msg.get_id()) { - let mut id = Uuid::new_v4(); - while reg.contains_key(&id) { - id = Uuid::new_v4(); - } - msg.reset_id(id); + while reg.contains_key(&msg.get_id()) { + msg.reset_id(); } let (tx, rx) = channel(); reg.insert(msg.get_id(), tx); diff --git a/src/queue.rs b/src/queue.rs index ae2530e..20d8b9b 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -70,8 +70,8 @@ impl Message { self.id.clone() } - pub fn reset_id(&mut self, id: Uuid) { - self.id = id; + pub fn reset_id(&mut self) { + self.id = Uuid::new_v4(); } } @@ -175,8 +175,9 @@ mod messages { #[test] fn reset_msg_id() { let mut msg = Message::new(MsgType::Time); - msg.reset_id(Uuid::nil()); - assert_eq!(msg.get_id(), Uuid::nil()); + let id = msg.get_id(); + msg.reset_id(); + assert_ne!(msg.get_id(), id); } }