linked client to session.
This commit is contained in:
30
src/queue.rs
30
src/queue.rs
@ -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();
|
||||
}
|
||||
|
Reference in New Issue
Block a user