Made message ids its own structure.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s
This commit is contained in:
@@ -2,6 +2,8 @@ pub mod wrapper;
|
|||||||
|
|
||||||
use crate::name::NameType;
|
use crate::name::NameType;
|
||||||
|
|
||||||
|
pub use wrapper::MessageID;
|
||||||
|
|
||||||
pub trait MessageAction {
|
pub trait MessageAction {
|
||||||
fn doc_name(&self) -> &NameType {
|
fn doc_name(&self) -> &NameType {
|
||||||
&NameType::None
|
&NameType::None
|
||||||
|
|||||||
@@ -12,10 +12,34 @@ use std::{
|
|||||||
};
|
};
|
||||||
use uuid::Uuid;
|
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)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Message {
|
pub struct Message {
|
||||||
msg_id: Uuid,
|
msg_id: MessageID,
|
||||||
// document_id: NameType,
|
|
||||||
action: MsgAction,
|
action: MsgAction,
|
||||||
route: Route,
|
route: Route,
|
||||||
// session: Option<?>
|
// session: Option<?>
|
||||||
@@ -27,13 +51,13 @@ impl Message {
|
|||||||
A: Into<MsgAction>,
|
A: Into<MsgAction>,
|
||||||
{
|
{
|
||||||
Self {
|
Self {
|
||||||
msg_id: Uuid::new_v4(),
|
msg_id: MessageID::new(),
|
||||||
action: action.into(),
|
action: action.into(),
|
||||||
route: Route::default(),
|
route: Route::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_message_id(&self) -> &Uuid {
|
pub fn get_message_id(&self) -> &MessageID {
|
||||||
&self.msg_id
|
&self.msg_id
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,11 +182,11 @@ mod messages {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn is_the_message_id_random() {
|
fn is_the_message_id_random() {
|
||||||
let mut ids: Vec<Uuid> = Vec::new();
|
let mut ids: Vec<MessageID> = Vec::new();
|
||||||
for _ in 0..5 {
|
for _ in 0..5 {
|
||||||
let msg = Message::new(Query::new(Name::english("test")));
|
let msg = Message::new(Query::new(Name::english("test")));
|
||||||
let id = msg.get_message_id().clone();
|
let id = msg.get_message_id().clone();
|
||||||
assert!(!ids.contains(&id), "{:?} containts {}", ids, id);
|
assert!(!ids.contains(&id), "{:?} containts {:?}", ids, id);
|
||||||
ids.push(id);
|
ids.push(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
use super::SenderID;
|
use super::SenderID;
|
||||||
use crate::{
|
use crate::{
|
||||||
action::{Action, MsgAction},
|
action::{Action, MsgAction},
|
||||||
message::{wrapper::Message, MessageAction},
|
message::{
|
||||||
|
wrapper::{Message, MessageID},
|
||||||
|
MessageAction,
|
||||||
|
},
|
||||||
mtterror::MTTError,
|
mtterror::MTTError,
|
||||||
name::{Name, NameID, NameType, Names},
|
name::{Name, NameID, NameType, Names},
|
||||||
queue::router::Queue,
|
queue::router::Queue,
|
||||||
@@ -121,13 +124,13 @@ mod registries {
|
|||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct Path {
|
pub struct Path {
|
||||||
pub msg_id: Include<Uuid>,
|
pub msg_id: Include<MessageID>,
|
||||||
pub doc: Include<NameType>,
|
pub doc: Include<NameType>,
|
||||||
pub action: Include<Action>,
|
pub action: Include<Action>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Path {
|
impl Path {
|
||||||
pub fn new(id: Include<Uuid>, doc: Include<NameType>, action: Include<Action>) -> Self {
|
pub fn new(id: Include<MessageID>, doc: Include<NameType>, action: Include<Action>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
msg_id: id,
|
msg_id: id,
|
||||||
doc: doc,
|
doc: doc,
|
||||||
@@ -140,7 +143,7 @@ impl Path {
|
|||||||
NT: Into<NameType>,
|
NT: Into<NameType>,
|
||||||
{
|
{
|
||||||
Self {
|
Self {
|
||||||
msg_id: Include::Just(Uuid::new_v4()),
|
msg_id: Include::Just(MessageID::new()),
|
||||||
doc: Include::Just(name.into()),
|
doc: Include::Just(name.into()),
|
||||||
action: Include::Just(action.into()),
|
action: Include::Just(action.into()),
|
||||||
}
|
}
|
||||||
@@ -183,7 +186,7 @@ mod paths {
|
|||||||
#[test]
|
#[test]
|
||||||
fn message_ids_are_unique_for_message_paths() {
|
fn message_ids_are_unique_for_message_paths() {
|
||||||
let count = 10;
|
let count = 10;
|
||||||
let mut ids: Vec<Uuid> = Vec::new();
|
let mut ids: Vec<MessageID> = Vec::new();
|
||||||
for _ in 0..count {
|
for _ in 0..count {
|
||||||
let path =
|
let path =
|
||||||
Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None)));
|
Path::for_message(NameType::None, &MsgAction::Show(Show::new(NameType::None)));
|
||||||
@@ -201,11 +204,11 @@ mod paths {
|
|||||||
pub struct Route {
|
pub struct Route {
|
||||||
pub action: Include<Action>,
|
pub action: Include<Action>,
|
||||||
pub doc_id: Include<NameID>,
|
pub doc_id: Include<NameID>,
|
||||||
pub msg_id: Include<Uuid>,
|
pub msg_id: Include<MessageID>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Route {
|
impl Route {
|
||||||
pub fn new(msg_id: Include<Uuid>, doc: Include<NameID>, action: Include<Action>) -> Self {
|
pub fn new(msg_id: Include<MessageID>, doc: Include<NameID>, action: Include<Action>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
action: action,
|
action: action,
|
||||||
doc_id: doc,
|
doc_id: doc,
|
||||||
@@ -253,7 +256,7 @@ impl From<&RouteID> for Route {
|
|||||||
pub struct RouteID {
|
pub struct RouteID {
|
||||||
action: Option<Action>,
|
action: Option<Action>,
|
||||||
doc_id: Option<NameID>,
|
doc_id: Option<NameID>,
|
||||||
msg_id: Option<Uuid>,
|
msg_id: Option<MessageID>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<Route> for RouteID {
|
impl From<Route> for RouteID {
|
||||||
@@ -333,8 +336,8 @@ mod route_storeage {
|
|||||||
let mut routes = RouteStorage::new();
|
let mut routes = RouteStorage::new();
|
||||||
let id1 = SenderID::new();
|
let id1 = SenderID::new();
|
||||||
let id2 = SenderID::new();
|
let id2 = SenderID::new();
|
||||||
let route1 = 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(Uuid::new_v4()), 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_id1 = routes.add(route1.clone(), id1.clone());
|
||||||
let route_id2 = routes.add(route2.clone(), id2.clone());
|
let route_id2 = routes.add(route2.clone(), id2.clone());
|
||||||
let result1 = routes.get(route1.clone());
|
let result1 = routes.get(route1.clone());
|
||||||
@@ -360,7 +363,7 @@ mod route_storeage {
|
|||||||
#[test]
|
#[test]
|
||||||
fn returns_empty_set_when_nothing_is_available() {
|
fn returns_empty_set_when_nothing_is_available() {
|
||||||
let routes = RouteStorage::new();
|
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);
|
let result = routes.get(route);
|
||||||
assert_eq!(result.len(), 0);
|
assert_eq!(result.len(), 0);
|
||||||
}
|
}
|
||||||
@@ -373,7 +376,7 @@ mod route_storeage {
|
|||||||
while ids.len() < count {
|
while ids.len() < count {
|
||||||
ids.insert(SenderID::new());
|
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() {
|
for id in ids.iter() {
|
||||||
routes.add(route.clone(), id.clone());
|
routes.add(route.clone(), id.clone());
|
||||||
}
|
}
|
||||||
@@ -386,7 +389,7 @@ mod route_storeage {
|
|||||||
let count = 5;
|
let count = 5;
|
||||||
let mut routes = RouteStorage::new();
|
let mut routes = RouteStorage::new();
|
||||||
let id = SenderID::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 {
|
for _ in 0..count {
|
||||||
routes.add(route.clone(), id.clone());
|
routes.add(route.clone(), id.clone());
|
||||||
}
|
}
|
||||||
@@ -400,8 +403,8 @@ mod route_storeage {
|
|||||||
let mut routes = RouteStorage::new();
|
let mut routes = RouteStorage::new();
|
||||||
let id1 = SenderID::new();
|
let id1 = SenderID::new();
|
||||||
let id2 = SenderID::new();
|
let id2 = SenderID::new();
|
||||||
let route1 = 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(Uuid::new_v4()), Include::All, Include::All);
|
let route2 = Route::new(Include::Just(MessageID::new()), Include::All, Include::All);
|
||||||
routes.add(route1.clone(), id1.clone());
|
routes.add(route1.clone(), id1.clone());
|
||||||
routes.add(route2.clone(), id2.clone());
|
routes.add(route2.clone(), id2.clone());
|
||||||
let retrieve = Route::new(Include::All, Include::All, Include::All);
|
let retrieve = Route::new(Include::All, Include::All, Include::All);
|
||||||
@@ -419,7 +422,7 @@ mod route_storeage {
|
|||||||
while ids.len() < count {
|
while ids.len() < count {
|
||||||
ids.insert(SenderID::new());
|
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() {
|
for id in ids.iter() {
|
||||||
routes.add(route.clone(), id.clone());
|
routes.add(route.clone(), id.clone());
|
||||||
}
|
}
|
||||||
@@ -434,7 +437,7 @@ mod route_storeage {
|
|||||||
fn empty_routes_are_release_memory() {
|
fn empty_routes_are_release_memory() {
|
||||||
let mut routes = RouteStorage::new();
|
let mut routes = RouteStorage::new();
|
||||||
let id = SenderID::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.add(route.clone(), id.clone());
|
||||||
routes.remove_sender_id(&id);
|
routes.remove_sender_id(&id);
|
||||||
assert_eq!(routes.data.len(), 0);
|
assert_eq!(routes.data.len(), 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user