diff --git a/src/message.rs b/src/message.rs index 8acbac5..35327b0 100644 --- a/src/message.rs +++ b/src/message.rs @@ -2,6 +2,8 @@ pub mod wrapper; use crate::name::NameType; +pub use wrapper::MessageID; + pub trait MessageAction { fn doc_name(&self) -> &NameType { &NameType::None diff --git a/src/message/wrapper.rs b/src/message/wrapper.rs index 9760745..cbe486b 100644 --- a/src/message/wrapper.rs +++ b/src/message/wrapper.rs @@ -12,10 +12,34 @@ use std::{ }; use uuid::Uuid; +#[derive(Clone, Debug, Eq, Hash, PartialEq)] +pub struct MessageID { + data: Uuid, +} + +impl MessageID { + pub fn new() -> Self { + Self { + data: Uuid::new_v4(), + } + } +} + +#[cfg(test)] +mod message_ids { + use super::*; + + #[test] + fn are_message_ids_unique() { + let id1 = MessageID::new(); + let id2 = MessageID::new(); + assert!(id1 != id2); + } +} + #[derive(Clone, Debug)] pub struct Message { - msg_id: Uuid, - // document_id: NameType, + msg_id: MessageID, action: MsgAction, route: Route, // session: Option @@ -27,13 +51,13 @@ impl Message { A: Into, { Self { - msg_id: Uuid::new_v4(), + msg_id: MessageID::new(), action: action.into(), route: Route::default(), } } - pub fn get_message_id(&self) -> &Uuid { + pub fn get_message_id(&self) -> &MessageID { &self.msg_id } @@ -158,11 +182,11 @@ mod messages { #[test] fn is_the_message_id_random() { - let mut ids: Vec = Vec::new(); + let mut ids: Vec = Vec::new(); for _ in 0..5 { let msg = Message::new(Query::new(Name::english("test"))); let id = msg.get_message_id().clone(); - assert!(!ids.contains(&id), "{:?} containts {}", ids, id); + assert!(!ids.contains(&id), "{:?} containts {:?}", ids, id); ids.push(id); } } diff --git a/src/queue/data_director.rs b/src/queue/data_director.rs index 75c2428..ca25a92 100644 --- a/src/queue/data_director.rs +++ b/src/queue/data_director.rs @@ -1,7 +1,10 @@ use super::SenderID; use crate::{ action::{Action, MsgAction}, - message::{wrapper::Message, MessageAction}, + message::{ + wrapper::{Message, MessageID}, + MessageAction, + }, mtterror::MTTError, name::{Name, NameID, NameType, Names}, queue::router::Queue, @@ -121,13 +124,13 @@ mod registries { #[derive(Clone, Debug)] pub struct Path { - pub msg_id: Include, + pub msg_id: Include, pub doc: Include, pub action: Include, } impl Path { - pub fn new(id: Include, doc: Include, action: Include) -> Self { + pub fn new(id: Include, doc: Include, action: Include) -> Self { Self { msg_id: id, doc: doc, @@ -140,7 +143,7 @@ impl Path { NT: Into, { Self { - msg_id: Include::Just(Uuid::new_v4()), + msg_id: Include::Just(MessageID::new()), doc: Include::Just(name.into()), action: Include::Just(action.into()), } @@ -183,7 +186,7 @@ mod paths { #[test] fn message_ids_are_unique_for_message_paths() { let count = 10; - let mut ids: Vec = Vec::new(); + let mut ids: Vec = Vec::new(); for _ in 0..count { let path = Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None))); @@ -201,11 +204,11 @@ mod paths { pub struct Route { pub action: Include, pub doc_id: Include, - pub msg_id: Include, + pub msg_id: Include, } impl Route { - pub fn new(msg_id: Include, doc: Include, action: Include) -> Self { + pub fn new(msg_id: Include, doc: Include, action: Include) -> Self { Self { action: action, doc_id: doc, @@ -253,7 +256,7 @@ impl From<&RouteID> for Route { pub struct RouteID { action: Option, doc_id: Option, - msg_id: Option, + msg_id: Option, } impl From for RouteID { @@ -333,8 +336,8 @@ mod route_storeage { let mut routes = RouteStorage::new(); let id1 = SenderID::new(); let id2 = SenderID::new(); - let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); - let route2 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route1 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); + let route2 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); let route_id1 = routes.add(route1.clone(), id1.clone()); let route_id2 = routes.add(route2.clone(), id2.clone()); let result1 = routes.get(route1.clone()); @@ -360,7 +363,7 @@ mod route_storeage { #[test] fn returns_empty_set_when_nothing_is_available() { let routes = RouteStorage::new(); - let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); let result = routes.get(route); assert_eq!(result.len(), 0); } @@ -373,7 +376,7 @@ mod route_storeage { while ids.len() < count { ids.insert(SenderID::new()); } - let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); for id in ids.iter() { routes.add(route.clone(), id.clone()); } @@ -386,7 +389,7 @@ mod route_storeage { let count = 5; let mut routes = RouteStorage::new(); let id = SenderID::new(); - let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); for _ in 0..count { routes.add(route.clone(), id.clone()); } @@ -400,8 +403,8 @@ mod route_storeage { let mut routes = RouteStorage::new(); let id1 = SenderID::new(); let id2 = SenderID::new(); - let route1 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); - let route2 = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route1 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); + let route2 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); routes.add(route1.clone(), id1.clone()); routes.add(route2.clone(), id2.clone()); let retrieve = Route::new(Include::All, Include::All, Include::All); @@ -419,7 +422,7 @@ mod route_storeage { while ids.len() < count { ids.insert(SenderID::new()); } - let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); for id in ids.iter() { routes.add(route.clone(), id.clone()); } @@ -434,7 +437,7 @@ mod route_storeage { fn empty_routes_are_release_memory() { let mut routes = RouteStorage::new(); let id = SenderID::new(); - let route = Route::new(Include::Just(Uuid::new_v4()), Include::All, Include::All); + let route = Route::new(Include::Just(MessageID::new()), Include::All, Include::All); routes.add(route.clone(), id.clone()); routes.remove_sender_id(&id); assert_eq!(routes.data.len(), 0);