Removed document id from message.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 1s

This commit is contained in:
Jeff Baskin 2026-02-18 10:09:55 -05:00
parent c3748ab845
commit bcddc1047a
6 changed files with 82 additions and 127 deletions

View File

@ -26,17 +26,11 @@ impl Clock {
vec![Name::english("clock")] vec![Name::english("clock")]
} }
/*
fn get_name() -> Name {
Name::english("clock")
}
*/
fn gen_message() -> Message { fn gen_message() -> Message {
Message::new( Message::new(MsgAction::OnUpdate(Records::new(
Clock::doc_names()[0].clone(), Clock::doc_names(),
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())), Names::new(),
) )))
} }
pub fn get_path() -> Path { pub fn get_path() -> Path {
@ -52,7 +46,7 @@ impl Clock {
let (tx, rx) = channel(); let (tx, rx) = channel();
let id = queue.add_sender(tx); let id = queue.add_sender(tx);
let reg_msg = Register::new(id, RegMsg::AddDocName(Clock::doc_names())); let reg_msg = Register::new(id, RegMsg::AddDocName(Clock::doc_names()));
let msg = Message::new(NameType::None, reg_msg.clone()); let msg = Message::new(reg_msg.clone());
queue.send(msg); queue.send(msg);
rx.recv().unwrap(); rx.recv().unwrap();
spawn(move || { spawn(move || {
@ -94,7 +88,7 @@ mod clocks {
id.clone(), id.clone(),
RegMsg::AddRoute(Path::new(Include::All, Include::All, Include::All)), RegMsg::AddRoute(Path::new(Include::All, Include::All, Include::All)),
); );
queue.send(Message::new(NameType::None, request)); queue.send(Message::new(request));
rx.recv_timeout(TIMEOUT).unwrap(); rx.recv_timeout(TIMEOUT).unwrap();
let mut holder: Vec<Message> = Vec::new(); let mut holder: Vec<Message> = Vec::new();
let start = Utc::now(); let start = Utc::now();
@ -106,7 +100,7 @@ mod clocks {
assert!((end - start) > TimeDelta::seconds(1)); assert!((end - start) > TimeDelta::seconds(1));
assert!((end - start) < TimeDelta::seconds(2)); assert!((end - start) < TimeDelta::seconds(2));
let reg_request = Register::new(id, RegMsg::GetNameID(Clock::doc_names()[0].clone())); let reg_request = Register::new(id, RegMsg::GetNameID(Clock::doc_names()[0].clone()));
queue.send(Message::new(NameType::None, reg_request)); queue.send(Message::new(reg_request));
rx.recv_timeout(TIMEOUT).unwrap(); rx.recv_timeout(TIMEOUT).unwrap();
for msg in holder.iter() { for msg in holder.iter() {
let action = msg.get_action(); let action = msg.get_action();

View File

@ -44,7 +44,7 @@ impl CreateDoc {
let id = queue.add_sender(tx); let id = queue.add_sender(tx);
for route in routes.iter() { for route in routes.iter() {
let regmsg = Register::new(id.clone(), RegMsg::AddRoute(route.clone())); let regmsg = Register::new(id.clone(), RegMsg::AddRoute(route.clone()));
queue.send(Message::new(NameType::None, regmsg)); queue.send(Message::new(regmsg));
rx.recv().unwrap(); rx.recv().unwrap();
} }
let doc = CreateDoc::new(queue, rx); let doc = CreateDoc::new(queue, rx);
@ -96,7 +96,7 @@ mod createdocs {
fn register_paths(&self, paths: Vec<Path>) { fn register_paths(&self, paths: Vec<Path>) {
for path in paths.iter() { for path in paths.iter() {
let regmsg = Register::new(self.rx_id.clone(), RegMsg::AddRoute(path.clone())); let regmsg = Register::new(self.rx_id.clone(), RegMsg::AddRoute(path.clone()));
self.queue.send(Message::new(NameType::None, regmsg)); self.queue.send(Message::new(regmsg));
self.rx.recv_timeout(TIMEOUT).unwrap(); self.rx.recv_timeout(TIMEOUT).unwrap();
} }
} }
@ -114,7 +114,7 @@ mod createdocs {
let queue = doc_creator.get_queue(); let queue = doc_creator.get_queue();
let rx = doc_creator.get_receiver(); let rx = doc_creator.get_receiver();
let name = Name::english("project"); let name = Name::english("project");
let msg1 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone()))); let msg1 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
queue.send(msg1.clone()); queue.send(msg1.clone());
let result1 = rx.recv_timeout(TIMEOUT).unwrap(); let result1 = rx.recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -127,7 +127,7 @@ mod createdocs {
MsgAction::Reply(_) => {} MsgAction::Reply(_) => {}
_ => unreachable!("got {:?}: should have been a reply.", result1.get_action()), _ => unreachable!("got {:?}: should have been a reply.", result1.get_action()),
} }
let msg2 = Message::new(name.clone(), Query::new(name.clone())); let msg2 = Message::new(Query::new(name.clone()));
queue.send(msg2.clone()); queue.send(msg2.clone());
let result2 = rx.recv_timeout(TIMEOUT).unwrap(); let result2 = rx.recv_timeout(TIMEOUT).unwrap();
assert_eq!(result2.get_message_id(), msg2.get_message_id()); assert_eq!(result2.get_message_id(), msg2.get_message_id());
@ -150,8 +150,8 @@ mod createdocs {
let queue = doc_creator.get_queue(); let queue = doc_creator.get_queue();
let rx = doc_creator.get_receiver(); let rx = doc_creator.get_receiver();
let name = Name::english("duplicate"); let name = Name::english("duplicate");
let msg1 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone()))); let msg1 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
let msg2 = Message::new(NameType::None, MsgAction::Create(DocDef::new(name.clone()))); let msg2 = Message::new(MsgAction::Create(DocDef::new(name.clone())));
queue.send(msg1.clone()); queue.send(msg1.clone());
queue.send(msg2.clone()); queue.send(msg2.clone());
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
@ -920,20 +920,17 @@ mod document_files {
where where
A: Into<MsgAction>, A: Into<MsgAction>,
{ {
let msg = Message::new(self.docdef.get_document_names()[0].clone(), action); let msg = Message::new(action);
self.queue.send(msg); self.queue.send(msg);
} }
fn start(&mut self, routes: Vec<Path>) { fn start(&mut self, routes: Vec<Path>) {
let msg = Message::new( let msg = Message::new(self.docdef.clone());
self.docdef.get_document_names()[0].clone(),
self.docdef.clone(),
);
DocumentFile::start(self.queue.clone(), msg); DocumentFile::start(self.queue.clone(), msg);
for route in routes.iter() { for route in routes.iter() {
let request = let request =
Register::new(self.sender_id.clone(), RegMsg::AddRoute(route.clone())); Register::new(self.sender_id.clone(), RegMsg::AddRoute(route.clone()));
let add_route = Message::new(NameType::None, request); let add_route = Message::new(request);
self.queue.send(add_route); self.queue.send(add_route);
self.rx.recv().unwrap(); self.rx.recv().unwrap();
} }
@ -982,7 +979,7 @@ mod document_files {
let alt = Name::english("alternate"); let alt = Name::english("alternate");
test_doc.start(standard_paths()); test_doc.start(standard_paths());
let docdef = DocDef::new(alt); let docdef = DocDef::new(alt);
let msg = Message::new(name.clone(), docdef); let msg = Message::new(docdef);
test_doc.get_queue().send(msg); test_doc.get_queue().send(msg);
match test_doc.get_receiver().recv_timeout(TIMEOUT) { match test_doc.get_receiver().recv_timeout(TIMEOUT) {
Ok(msg) => unreachable!("should not receive: {:?}", msg), Ok(msg) => unreachable!("should not receive: {:?}", msg),
@ -1008,7 +1005,7 @@ mod document_files {
MsgAction::Update(Update::new(name.clone())), MsgAction::Update(Update::new(name.clone())),
]; ];
for msg_action in msg_actions.iter() { for msg_action in msg_actions.iter() {
let msg = Message::new(name.clone(), msg_action.clone()); let msg = Message::new(msg_action.clone());
queue.send(msg.clone()); queue.send(msg.clone());
let result = match test_doc.get_receiver().recv_timeout(TIMEOUT) { let result = match test_doc.get_receiver().recv_timeout(TIMEOUT) {
Ok(data) => data.clone(), Ok(data) => data.clone(),
@ -1048,7 +1045,7 @@ mod document_files {
test_doc.get_sender_id(), test_doc.get_sender_id(),
RegMsg::AddDocName([alt.clone()].to_vec()), RegMsg::AddDocName([alt.clone()].to_vec()),
); );
let setup = Message::new(NameType::None, reg_msg.clone()); let setup = Message::new(reg_msg.clone());
queue.send(setup); queue.send(setup);
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let msg_actions = [ let msg_actions = [
@ -1061,7 +1058,7 @@ mod document_files {
]; ];
let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new(); let mut msgs: HashMap<Uuid, MsgAction> = HashMap::new();
for msg_action in msg_actions.iter() { for msg_action in msg_actions.iter() {
let msg = Message::new(alt.clone(), msg_action.clone()); let msg = Message::new(msg_action.clone());
msgs.insert(msg.get_message_id().clone(), msg_action.clone()); msgs.insert(msg.get_message_id().clone(), msg_action.clone());
queue.send(msg); queue.send(msg);
} }
@ -1099,7 +1096,7 @@ mod document_files {
for item in data.iter() { for item in data.iter() {
test_doc.populate([item.clone()].to_vec()); test_doc.populate([item.clone()].to_vec());
} }
let msg = Message::new(doc_name.clone(), Query::new(doc_name.clone())); let msg = Message::new(Query::new(doc_name.clone()));
queue.send(msg.clone()); queue.send(msg.clone());
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -1138,7 +1135,7 @@ mod document_files {
test_doc.start(routes); test_doc.start(routes);
let mut add = Addition::new(doc_name.clone()); let mut add = Addition::new(doc_name.clone());
add.add_field(field_name.clone(), data.clone()); add.add_field(field_name.clone(), data.clone());
let msg = Message::new(doc_name.clone(), add); let msg = Message::new(add);
queue.send(msg.clone()); queue.send(msg.clone());
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -1178,7 +1175,7 @@ mod document_files {
for item in data.iter() { for item in data.iter() {
test_doc.populate([item.clone()].to_vec()); test_doc.populate([item.clone()].to_vec());
} }
let msg = Message::new(doc_name.clone(), Delete::new(doc_name.clone())); let msg = Message::new(Delete::new(doc_name.clone()));
queue.send(msg.clone()); queue.send(msg.clone());
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -1228,7 +1225,7 @@ mod document_files {
update update
.get_values_mut() .get_values_mut()
.add_field(field_name.clone(), Uuid::nil()); .add_field(field_name.clone(), Uuid::nil());
let msg = Message::new(doc_name.clone(), update); let msg = Message::new(update);
queue.send(msg.clone()); queue.send(msg.clone());
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
assert_eq!( assert_eq!(
@ -1285,8 +1282,8 @@ mod document_files {
), ),
} }
}; };
testing(Message::new(doc_name.clone(), new_doc)); testing(Message::new(new_doc));
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone()))); testing(Message::new(Query::new(doc_name.clone())));
} }
#[test] #[test]
@ -1302,10 +1299,10 @@ mod document_files {
for i in 0..count { for i in 0..count {
let mut new_doc = Addition::new(doc_name.clone()); let mut new_doc = Addition::new(doc_name.clone());
new_doc.add_field(name.clone(), i); new_doc.add_field(name.clone(), i);
queue.send(Message::new(doc_name.clone(), new_doc)); queue.send(Message::new(new_doc));
test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
} }
queue.send(Message::new(doc_name.clone(), Query::new(doc_name.clone()))); queue.send(Message::new(Query::new(doc_name.clone())));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
let mut entries: HashSet<i128> = (0..count).collect(); let mut entries: HashSet<i128> = (0..count).collect();
@ -1345,10 +1342,7 @@ mod document_files {
let name = Name::english("bad"); let name = Name::english("bad");
let mut addition = Addition::new(test_doc.doc_name()); let mut addition = Addition::new(test_doc.doc_name());
addition.add_field(name.clone(), "doesn't matter"); addition.add_field(name.clone(), "doesn't matter");
queue.send(Message::new( queue.send(Message::new(addition));
test_doc.get_docdef().get_document_names()[0].clone(),
addition,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
match result.get_action() { match result.get_action() {
MsgAction::Error(err) => match err.error_id() { MsgAction::Error(err) => match err.error_id() {
@ -1366,10 +1360,7 @@ mod document_files {
let queue = test_doc.get_queue(); let queue = test_doc.get_queue();
let mut addition = Addition::new(test_doc.doc_name()); let mut addition = Addition::new(test_doc.doc_name());
addition.add_field(Name::english("field0"), "string"); addition.add_field(Name::english("field0"), "string");
queue.send(Message::new( queue.send(Message::new(addition));
test_doc.get_docdef().get_document_names()[0].clone(),
addition,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
match result.get_action() { match result.get_action() {
MsgAction::Error(err) => match err.error_id() { MsgAction::Error(err) => match err.error_id() {
@ -1390,10 +1381,7 @@ mod document_files {
let queue = test_doc.get_queue(); let queue = test_doc.get_queue();
let mut addition = Addition::new(test_doc.doc_name()); let mut addition = Addition::new(test_doc.doc_name());
addition.add_field(Name::english("field0"), 1); addition.add_field(Name::english("field0"), 1);
queue.send(Message::new( queue.send(Message::new(addition));
test_doc.get_docdef().get_document_names()[0].clone(),
addition,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
match result.get_action() { match result.get_action() {
MsgAction::Error(err) => match err.error_id() { MsgAction::Error(err) => match err.error_id() {
@ -1421,10 +1409,7 @@ mod document_files {
.unwrap(); .unwrap();
let mut query = Query::new(doc_name); let mut query = Query::new(doc_name);
query.add(Name::english("field0"), calc); query.add(Name::english("field0"), calc);
queue.send(Message::new( queue.send(Message::new(query));
test_doc.get_docdef().get_document_names()[0].clone(),
query,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -1458,10 +1443,7 @@ mod document_files {
calc.add_value(1).unwrap(); calc.add_value(1).unwrap();
let mut query = Query::new(doc_name); let mut query = Query::new(doc_name);
query.add(Name::english("field0"), calc); query.add(Name::english("field0"), calc);
queue.send(Message::new( queue.send(Message::new(query));
test_doc.get_docdef().get_document_names()[0].clone(),
query,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -1499,10 +1481,7 @@ mod document_files {
.unwrap(); .unwrap();
let mut query = Query::new(doc_name); let mut query = Query::new(doc_name);
query.add(Name::english("field0"), calc); query.add(Name::english("field0"), calc);
queue.send(Message::new( queue.send(Message::new(query));
test_doc.get_docdef().get_document_names()[0].clone(),
query,
));
let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = test_doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -1671,7 +1650,7 @@ mod document_files {
let mut calc = Calculation::new(Operand::Equal); let mut calc = Calculation::new(Operand::Equal);
calc.add_value("something").unwrap(); calc.add_value("something").unwrap();
query.add(field_name.clone(), calc); query.add(field_name.clone(), calc);
let msg = Message::new(doc_name, query); let msg = Message::new(query);
queue.send(msg); queue.send(msg);
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -1722,7 +1701,7 @@ mod document_files {
let queue = test_doc.get_queue(); let queue = test_doc.get_queue();
let rx = test_doc.get_receiver(); let rx = test_doc.get_receiver();
let new_doc = Addition::new(doc_name.clone()); let new_doc = Addition::new(doc_name.clone());
let msg = Message::new(doc_name, new_doc); let msg = Message::new(new_doc);
queue.send(msg); queue.send(msg);
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -1750,7 +1729,7 @@ mod document_files {
let queue = test_doc.get_queue(); let queue = test_doc.get_queue();
let rx = test_doc.get_receiver(); let rx = test_doc.get_receiver();
let new_doc = Addition::new(doc_name.clone()); let new_doc = Addition::new(doc_name.clone());
let msg = Message::new(doc_name, new_doc); let msg = Message::new(new_doc);
queue.send(msg); queue.send(msg);
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -1779,7 +1758,7 @@ mod document_files {
let rx = test_doc.get_receiver(); let rx = test_doc.get_receiver();
let mut new_doc = Addition::new(doc_name.clone()); let mut new_doc = Addition::new(doc_name.clone());
new_doc.add_field(&field_name, Uuid::nil()); new_doc.add_field(&field_name, Uuid::nil());
let msg = Message::new(doc_name, new_doc); let msg = Message::new(new_doc);
queue.send(msg); queue.send(msg);
let result = rx.recv_timeout(TIMEOUT).unwrap(); let result = rx.recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
@ -1863,8 +1842,8 @@ mod document_files {
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
} }
}; };
testing(Message::new(doc_name.clone(), update)); testing(Message::new(update));
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone()))); testing(Message::new(Query::new(doc_name.clone())));
} }
#[test] #[test]
@ -1890,7 +1869,7 @@ mod document_files {
update update
.get_values_mut() .get_values_mut()
.add_field(Name::english("field1"), new); .add_field(Name::english("field1"), new);
doc.get_queue().send(Message::new(doc_name.clone(), update)); doc.get_queue().send(Message::new(update));
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -1904,7 +1883,7 @@ mod document_files {
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
} }
doc.get_queue() doc.get_queue()
.send(Message::new(doc_name.clone(), Query::new(doc_name.clone()))); .send(Message::new(Query::new(doc_name.clone())));
let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
let action = result.get_action(); let action = result.get_action();
match action { match action {
@ -1969,8 +1948,8 @@ mod document_files {
_ => unreachable!("got {:?}: should have gotten a reply", action), _ => unreachable!("got {:?}: should have gotten a reply", action),
} }
}; };
testing(Message::new(doc_name.clone(), update)); testing(Message::new(update));
testing(Message::new(doc_name.clone(), Query::new(doc_name.clone()))); testing(Message::new(Query::new(doc_name.clone())));
} }
#[test] #[test]
@ -2428,13 +2407,13 @@ mod document_files {
for item in 1..3 { for item in 1..3 {
doc.populate([item.into()].to_vec()); doc.populate([item.into()].to_vec());
} }
let trigger = Message::new( let trigger = Message::new(MsgAction::OnUpdate(Records::new(
Name::english("clock"), Clock::doc_names(),
MsgAction::OnUpdate(Records::new(Clock::doc_names(), Names::new())), Names::new(),
); )));
queue.send(trigger.clone()); queue.send(trigger.clone());
sleep(TIMEOUT); sleep(TIMEOUT);
let msg = Message::new(doc_name.clone(), Query::new(doc_name.clone())); let msg = Message::new(Query::new(doc_name.clone()));
queue.send(msg.clone()); queue.send(msg.clone());
let mut result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap(); let mut result = doc.get_receiver().recv_timeout(TIMEOUT).unwrap();
while result.get_message_id() != msg.get_message_id() { while result.get_message_id() != msg.get_message_id() {

View File

@ -65,7 +65,7 @@ impl Session {
let (tx, rx) = channel(); let (tx, rx) = channel();
let sender_id = queue.add_sender(tx); let sender_id = queue.add_sender(tx);
let msg = Message::new(NameType::None, docdef); let msg = Message::new(docdef);
let msg_id = msg.get_message_id().clone(); let msg_id = msg.get_message_id().clone();
let path = Path::new( let path = Path::new(
Include::Just(msg_id), Include::Just(msg_id),
@ -132,7 +132,7 @@ mod sessions {
]; ];
for path in paths.iter() { for path in paths.iter() {
let reg = Register::new(id.clone(), RegMsg::AddRoute(path.clone())); let reg = Register::new(id.clone(), RegMsg::AddRoute(path.clone()));
queue.send(Message::new(NameType::None, reg)); queue.send(Message::new(reg));
rx.recv_timeout(TIMEOUT).unwrap(); rx.recv_timeout(TIMEOUT).unwrap();
} }
Self { Self {
@ -146,7 +146,7 @@ mod sessions {
where where
A: Into<MsgAction>, A: Into<MsgAction>,
{ {
Message::new(Session::doc_names()[0].clone(), action) Message::new(action)
} }
fn recv(&self) -> Result<Message, RecvTimeoutError> { fn recv(&self) -> Result<Message, RecvTimeoutError> {
@ -159,7 +159,7 @@ mod sessions {
fn send_registry_message(&self, msg: RegMsg) { fn send_registry_message(&self, msg: RegMsg) {
let request = Register::new(self.sender_id.clone(), msg); let request = Register::new(self.sender_id.clone(), msg);
self.queue.send(Message::new(NameType::None, request)); self.queue.send(Message::new(request));
} }
} }

View File

@ -92,7 +92,7 @@ impl MoreThanText {
None => new_session, None => new_session,
}; };
let doc_name = Name::english("session"); let doc_name = Name::english("session");
let msg = Message::new(doc_name.clone(), action.clone()); let msg = Message::new(action.clone());
let msg_id = msg.get_message_id(); let msg_id = msg.get_message_id();
let path = Path::new( let path = Path::new(
Include::Just(msg_id.clone()), Include::Just(msg_id.clone()),

View File

@ -1,3 +1,4 @@
use super::MessageAction;
use crate::{ use crate::{
action::{CalcValue, Field, FieldType, MsgAction, Operand, Query, Reply}, action::{CalcValue, Field, FieldType, MsgAction, Operand, Query, Reply},
mtterror::{ErrorID, MTTError}, mtterror::{ErrorID, MTTError},
@ -9,19 +10,30 @@ use std::{
collections::{HashMap, HashSet}, collections::{HashMap, HashSet},
time::Duration, time::Duration,
}; };
use super::MessageAction;
use uuid::Uuid; use uuid::Uuid;
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct Message { pub struct Message {
msg_id: Uuid, msg_id: Uuid,
document_id: NameType, // document_id: NameType,
action: MsgAction, action: MsgAction,
route: Route, route: Route,
// session: Option<?> // session: Option<?>
} }
impl Message { impl Message {
pub fn new<A>(action: A) -> Self
where
A: Into<MsgAction>,
{
Self {
msg_id: Uuid::new_v4(),
action: action.into(),
route: Route::default(),
}
}
/*
pub fn new<D, A>(doc_id: D, action: A) -> Self pub fn new<D, A>(doc_id: D, action: A) -> Self
where where
D: Into<NameType>, D: Into<NameType>,
@ -34,6 +46,7 @@ impl Message {
route: Route::default(), route: Route::default(),
} }
} }
*/
pub fn get_message_id(&self) -> &Uuid { pub fn get_message_id(&self) -> &Uuid {
&self.msg_id &self.msg_id
@ -65,7 +78,6 @@ impl Message {
{ {
Self { Self {
msg_id: self.msg_id.clone(), msg_id: self.msg_id.clone(),
document_id: self.document_id.clone(),
action: action.into(), action: action.into(),
route: Route::default(), route: Route::default(),
} }
@ -78,7 +90,6 @@ impl Message {
{ {
Self { Self {
msg_id: self.msg_id.clone(), msg_id: self.msg_id.clone(),
document_id: doc_id.into(),
action: action.into(), action: action.into(),
route: Route::default(), route: Route::default(),
} }
@ -94,14 +105,7 @@ mod messages {
fn can_the_document_be_a_named_reference() { fn can_the_document_be_a_named_reference() {
let dts = [Name::english("one"), Name::english("two")]; let dts = [Name::english("one"), Name::english("two")];
for document in dts.into_iter() { for document in dts.into_iter() {
let msg = Message::new( let msg = Message::new(MsgAction::Create(DocDef::new(document.clone())));
document.clone(),
MsgAction::Create(DocDef::new(document.clone())),
);
match &msg.document_id {
NameType::Name(data) => assert_eq!(data, &document),
_ => unreachable!("should have been a string id"),
}
match msg.get_action() { match msg.get_action() {
MsgAction::Create(_) => {} MsgAction::Create(_) => {}
_ => unreachable!("should have been a create document"), _ => unreachable!("should have been a create document"),
@ -112,11 +116,7 @@ mod messages {
#[test] #[test]
fn can_the_document_be_an_id() { fn can_the_document_be_an_id() {
let document = Uuid::new_v4(); let document = Uuid::new_v4();
let msg = Message::new(document.clone(), Query::new(document.clone())); let msg = Message::new(Query::new(document.clone()));
match msg.document_id {
NameType::ID(data) => assert_eq!(data, document),
_ => unreachable!("should have been an id"),
}
match msg.get_action() { match msg.get_action() {
MsgAction::Query(_) => {} MsgAction::Query(_) => {}
_ => unreachable!("should have been an access query"), _ => unreachable!("should have been an access query"),
@ -126,7 +126,7 @@ mod messages {
#[test] #[test]
fn do_messages_contain_routes() { fn do_messages_contain_routes() {
let name = Name::english("whatever"); let name = Name::english("whatever");
let mut msg = Message::new(name.clone(), Query::new(name.clone())); let mut msg = Message::new(Query::new(name.clone()));
let default_route = msg.get_route(); let default_route = msg.get_route();
match default_route.msg_id { match default_route.msg_id {
Include::Just(_) => unreachable!("should defalt to all"), Include::Just(_) => unreachable!("should defalt to all"),
@ -166,7 +166,7 @@ mod messages {
fn is_the_message_id_random() { fn is_the_message_id_random() {
let mut ids: Vec<Uuid> = Vec::new(); let mut ids: Vec<Uuid> = Vec::new();
for _ in 0..5 { for _ in 0..5 {
let msg = Message::new(Name::english("tester"), 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);
@ -176,14 +176,10 @@ mod messages {
#[test] #[test]
fn can_make_reply_message() { fn can_make_reply_message() {
let name = Name::english("testing"); let name = Name::english("testing");
let msg = Message::new(name.clone(), Query::new(name.clone())); let msg = Message::new(Query::new(name.clone()));
let responce = Reply::new(Name::english("something")); let responce = Reply::new(Name::english("something"));
let reply = msg.response(responce); let reply = msg.response(responce);
assert_eq!(reply.get_message_id(), msg.get_message_id()); assert_eq!(reply.get_message_id(), msg.get_message_id());
match &reply.document_id {
NameType::Name(data) => assert_eq!(data, &name),
_ => unreachable!("should have been a name"),
}
match reply.get_action() { match reply.get_action() {
MsgAction::Reply(_) => {} MsgAction::Reply(_) => {}
_ => unreachable!("should have been a reply"), _ => unreachable!("should have been a reply"),
@ -193,14 +189,10 @@ mod messages {
#[test] #[test]
fn can_make_error_message() { fn can_make_error_message() {
let name = Name::english("testing"); let name = Name::english("testing");
let msg = Message::new(name.clone(), Query::new(name.clone())); let msg = Message::new(Query::new(name.clone()));
let err_msg = Uuid::new_v4().to_string(); let err_msg = Uuid::new_v4().to_string();
let result = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound)); let result = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
assert_eq!(result.get_message_id(), msg.get_message_id()); assert_eq!(result.get_message_id(), msg.get_message_id());
match &result.document_id {
NameType::Name(data) => assert_eq!(data, &name),
_ => unreachable!("should have been a name"),
}
match result.get_action() { match result.get_action() {
MsgAction::Error(data) => match data.error_id() { MsgAction::Error(data) => match data.error_id() {
ErrorID::DocumentNotFound => {} ErrorID::DocumentNotFound => {}
@ -213,14 +205,12 @@ mod messages {
#[test] #[test]
fn can_make_a_response_message() { fn can_make_a_response_message() {
let doc_id = Uuid::new_v4(); let doc_id = Uuid::new_v4();
let msg = Message::new(doc_id.clone(), Query::new(doc_id.clone())); let msg = Message::new(Query::new(doc_id.clone()));
let data = Uuid::new_v4().to_string(); let data = Uuid::new_v4().to_string();
let result1 = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound)); let result1 = msg.response(MTTError::new(NameType::None, ErrorID::DocumentNotFound));
let result2 = msg.response(Reply::new(NameType::None)); let result2 = msg.response(Reply::new(NameType::None));
assert_eq!(result1.get_message_id(), msg.get_message_id()); assert_eq!(result1.get_message_id(), msg.get_message_id());
assert_eq!(result2.get_message_id(), msg.get_message_id()); assert_eq!(result2.get_message_id(), msg.get_message_id());
assert_eq!(result1.document_id, msg.document_id);
assert_eq!(result2.document_id, msg.document_id);
let action1 = result1.get_action(); let action1 = result1.get_action();
match action1 { match action1 {
MsgAction::Error(err) => match err.error_id() { MsgAction::Error(err) => match err.error_id() {

View File

@ -36,9 +36,7 @@ impl Router {
fn remove_sender(&mut self, id: &Uuid) { fn remove_sender(&mut self, id: &Uuid) {
let action = Register::new(Uuid::nil(), RegMsg::RemoveSender(id.clone())); let action = Register::new(Uuid::nil(), RegMsg::RemoveSender(id.clone()));
self.doc_registry self.doc_registry.send(Message::new(action)).unwrap();
.send(Message::new(NameType::None, action))
.unwrap();
self.senders.remove(id); self.senders.remove(id);
} }
@ -137,7 +135,7 @@ mod routers {
fn can_pass_message() { fn can_pass_message() {
let setup = Setup::new(); let setup = Setup::new();
let router = setup.get_router(); let router = setup.get_router();
let msg = Message::new(Name::english("task"), Query::new(Name::english("task"))); let msg = Message::new(Query::new(Name::english("task")));
router.send(msg.clone()); router.send(msg.clone());
let result = setup.recv().unwrap(); let result = setup.recv().unwrap();
assert_eq!(result.get_message_id(), msg.get_message_id()); assert_eq!(result.get_message_id(), msg.get_message_id());
@ -154,10 +152,7 @@ mod routers {
receivers.insert(id, rx); receivers.insert(id, rx);
} }
for (id, recv) in receivers.iter() { for (id, recv) in receivers.iter() {
let msg = Message::new( let msg = Message::new(Query::new(Name::english(id.to_string().as_str())));
Name::english(id.to_string().as_str()),
Query::new(Name::english(id.to_string().as_str())),
);
router.forward(id, msg.clone()); router.forward(id, msg.clone());
let result = recv.recv_timeout(TIMEOUT).unwrap(); let result = recv.recv_timeout(TIMEOUT).unwrap();
assert_eq!(result.get_message_id(), msg.get_message_id()); assert_eq!(result.get_message_id(), msg.get_message_id());
@ -191,7 +186,7 @@ mod routers {
router.remove_sender(&removed); router.remove_sender(&removed);
let router = setup.get_router(); let router = setup.get_router();
let removed_recv = receivers.remove(&removed).unwrap(); let removed_recv = receivers.remove(&removed).unwrap();
router.forward(&removed, Message::new(NameType::None, Query::internal())); router.forward(&removed, Message::new(Query::internal()));
match removed_recv.recv_timeout(TIMEOUT) { match removed_recv.recv_timeout(TIMEOUT) {
Err(err) => match err { Err(err) => match err {
RecvTimeoutError::Disconnected => {} RecvTimeoutError::Disconnected => {}
@ -212,10 +207,7 @@ mod routers {
_ => unreachable!("got {:?}, should have been register", action), _ => unreachable!("got {:?}, should have been register", action),
} }
for (id, recv) in receivers.iter() { for (id, recv) in receivers.iter() {
let msg = Message::new( let msg = Message::new(Query::new(Name::english(id.to_string().as_str())));
Name::english(id.to_string().as_str()),
Query::new(Name::english(id.to_string().as_str())),
);
router.forward(id, msg.clone()); router.forward(id, msg.clone());
let result = recv.recv_timeout(TIMEOUT).unwrap(); let result = recv.recv_timeout(TIMEOUT).unwrap();
assert_eq!(result.get_message_id(), msg.get_message_id()); assert_eq!(result.get_message_id(), msg.get_message_id());
@ -276,7 +268,7 @@ mod queues {
fn send_reg_msg(&self, msg: RegMsg) { fn send_reg_msg(&self, msg: RegMsg) {
let reg_msg = Register::new(self.rx_id.clone(), msg); let reg_msg = Register::new(self.rx_id.clone(), msg);
self.test_mod.send(Message::new(NameType::None, reg_msg)); self.test_mod.send(Message::new(reg_msg));
} }
fn recv(&self) -> Result<Message, RecvTimeoutError> { fn recv(&self) -> Result<Message, RecvTimeoutError> {