linked client to session.

This commit is contained in:
2025-04-07 00:41:28 -04:00
parent d8623f9691
commit f9f64dae55
6 changed files with 75 additions and 44 deletions

View File

@ -8,7 +8,6 @@ use uuid::Uuid;
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
pub enum MsgType {
ClientRequest,
NoOp,
SessionValidate,
Session,
}
@ -49,8 +48,8 @@ impl Message {
self.data.insert(name.into(), data.into());
}
pub fn get_data(&self) -> &HashMap<String, Field> {
&self.data
pub fn get_data(&self, name: &str) -> Option<&Field> {
self.data.get(name)
}
pub fn get_id(&self) -> Uuid {
@ -71,9 +70,9 @@ mod messages {
#[test]
fn new_message() {
let msg = Message::new(MsgType::NoOp);
let msg = Message::new(MsgType::SessionValidate);
match msg.class {
MsgType::NoOp => (),
MsgType::SessionValidate => (),
_ => unreachable!("new defaults to noop"),
}
assert!(msg.data.is_empty());
@ -83,7 +82,7 @@ mod messages {
fn message_ids_are_random() {
let mut ids: Vec<Uuid> = Vec::new();
for _ in 0..10 {
let msg = Message::new(MsgType::NoOp);
let msg = Message::new(MsgType::SessionValidate);
let id = msg.id.clone();
assert!(!ids.contains(&id), "{} is a duplicate", id);
ids.push(id);
@ -93,7 +92,7 @@ mod messages {
#[test]
fn create_reply() {
let id = Uuid::new_v4();
let mut msg = Message::new(MsgType::NoOp);
let mut msg = Message::new(MsgType::SessionValidate);
msg.id = id.clone();
msg.add_data("test", "test");
let data = MsgType::ClientRequest;
@ -108,23 +107,22 @@ mod messages {
#[test]
fn get_message_type() {
let msg = Message::new(MsgType::NoOp);
let msg = Message::new(MsgType::SessionValidate);
match msg.get_class() {
MsgType::NoOp => {}
MsgType::SessionValidate => {}
_ => unreachable!("should have bneen noopn"),
}
}
#[test]
fn add_data() {
let mut msg = Message::new(MsgType::NoOp);
let mut msg = Message::new(MsgType::SessionValidate);
let one = "one";
let two = "two".to_string();
msg.add_data(one, one);
msg.add_data(two.clone(), two.clone());
let result = msg.get_data();
assert_eq!(result.get(one).unwrap().to_string(), one);
assert_eq!(result.get(&two).unwrap().to_string(), two);
assert_eq!(msg.get_data(one).unwrap().to_string(), one);
assert_eq!(msg.get_data(&two).unwrap().to_string(), two);
}
#[test]
@ -185,9 +183,9 @@ mod queues {
let queue = Queue::new();
let (tx1, rx1) = channel();
let (tx2, rx2) = channel();
queue.add(tx1, [MsgType::NoOp].to_vec());
queue.add(tx2, [MsgType::NoOp].to_vec());
queue.send(Message::new(MsgType::NoOp));
queue.add(tx1, [MsgType::SessionValidate].to_vec());
queue.add(tx2, [MsgType::SessionValidate].to_vec());
queue.send(Message::new(MsgType::SessionValidate));
rx1.recv().unwrap();
rx2.recv().unwrap();
}