Moved session information into message.
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled

This commit is contained in:
2026-04-18 14:06:41 -04:00
parent f704dec080
commit 46b41293b8
2 changed files with 54 additions and 12 deletions

View File

@@ -143,7 +143,7 @@ impl MTTClient {
]; ];
let msg = Message::default() let msg = Message::default()
.set_id(msg_id) .set_id(msg_id)
.set_session(self.session_id.clone().into()); .set_session(self.session_id.clone());
for path in paths.iter() { for path in paths.iter() {
let reg_msg = Register::new(self.sender_id.clone(), RegMsg::AddRoute(path.clone())); let reg_msg = Register::new(self.sender_id.clone(), RegMsg::AddRoute(path.clone()));
self.queue.send(msg.set_action(reg_msg)); self.queue.send(msg.set_action(reg_msg));
@@ -181,7 +181,7 @@ impl MTTClient {
]; ];
let msg = Message::default() let msg = Message::default()
.set_id(msg_id.clone()) .set_id(msg_id.clone())
.set_session(self.session_id.clone().into()); .set_session(self.session_id.clone());
for path in paths.iter() { for path in paths.iter() {
let reg_msg = Register::new(self.sender_id.clone(), RegMsg::AddRoute(path.clone())); let reg_msg = Register::new(self.sender_id.clone(), RegMsg::AddRoute(path.clone()));
self.queue.send(msg.set_action(reg_msg)); self.queue.send(msg.set_action(reg_msg));

View File

@@ -1,5 +1,5 @@
use crate::{ use crate::{
action::{Field, MsgAction}, action::{Field, FieldType, MsgAction},
name::NameType, name::NameType,
queue::data_director::{Include, Path, Route}, queue::data_director::{Include, Path, Route},
}; };
@@ -49,12 +49,7 @@ impl Message {
where where
A: Into<MsgAction>, A: Into<MsgAction>,
{ {
Self { Self::default().set_action(action)
msg_id: MessageID::new(),
action: action.into(),
route: Route::default(),
session: Field::None,
}
} }
pub fn set_id(&self, msg_id: MessageID) -> Self { pub fn set_id(&self, msg_id: MessageID) -> Self {
@@ -63,9 +58,20 @@ impl Message {
output output
} }
pub fn set_session(&self, session: Field) -> Self { pub fn set_session<F>(&self, session: F) -> Self
where
F: Into<Field>,
{
let sess_id = match session.into() {
Field::Uuid(data) => Field::Uuid(data.clone()),
Field::StaticString(data) => match Uuid::try_from(data) {
Ok(id) => Field::Uuid(id.clone()),
Err(_) => Field::None,
},
_ => Field::None,
};
let mut output = self.clone(); let mut output = self.clone();
output.session = session; output.session = sess_id;
output output
} }
@@ -165,13 +171,49 @@ mod messages {
#[test] #[test]
fn can_session_be_set() { fn can_session_be_set() {
let doc_name = Name::english("identification"); let doc_name = Name::english("use field");
let qry = Query::new(doc_name.clone()); let qry = Query::new(doc_name.clone());
let sess_id: Field = Uuid::new_v4().into(); let sess_id: Field = Uuid::new_v4().into();
let msg = Message::new(qry).set_session(sess_id.clone()); let msg = Message::new(qry).set_session(sess_id.clone());
assert_eq!(msg.session, sess_id); assert_eq!(msg.session, sess_id);
} }
#[test]
fn can_session_be_set_by_string() {
let doc_name = Name::english("string");
let qry = Query::new(doc_name.clone());
let sess_id = Uuid::new_v4();
let msg = Message::new(qry).set_session(sess_id.to_string());
assert_eq!(msg.session, sess_id.into());
}
#[test]
fn does_garbage_return_none() {
let doc_name = Name::english("garbage");
let qry = Query::new(doc_name.clone());
let sess_id = "not a uuid";
let msg = Message::new(qry).set_session(sess_id);
assert_eq!(msg.session, Field::None);
}
#[test]
fn can_uuid_set_session_id() {
let doc_name = Name::english("uuid");
let qry = Query::new(doc_name.clone());
let sess_id = Uuid::new_v4();
let msg = Message::new(qry).set_session(sess_id.clone());
assert_eq!(msg.session, sess_id.into());
}
#[test]
fn does_wrong_field_type_return_none() {
let doc_name = Name::english("uuid");
let qry = Query::new(doc_name.clone());
let sess_id = FieldType::DateTime.get_default();
let msg = Message::new(qry).set_session(sess_id.clone());
assert_eq!(msg.session, Field::None);
}
#[test] #[test]
fn can_action_be_set() { fn can_action_be_set() {
let doc_name = Name::english("action"); let doc_name = Name::english("action");