Got session control into it's own layer.
This commit is contained in:
37
src/queue.rs
37
src/queue.rs
@@ -1,4 +1,4 @@
|
||||
use crate::{client::Request, field::Field};
|
||||
use crate::field::Field;
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
sync::{mpsc::Sender, Arc, RwLock},
|
||||
@@ -70,23 +70,16 @@ impl Message {
|
||||
pub fn get_id(&self) -> Uuid {
|
||||
self.id.clone()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Request> for Message {
|
||||
fn from(value: Request) -> Self {
|
||||
let mut msg = Message::new(MsgType::ClientRequest);
|
||||
match value.session {
|
||||
Some(id) => msg.add_data("sess_id", id),
|
||||
None => {}
|
||||
}
|
||||
msg
|
||||
pub fn reset_id(&mut self, id: Uuid) {
|
||||
self.id = id;
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod messages {
|
||||
use super::*;
|
||||
use crate::client::requests::{get_root_document, get_root_document_eith_session};
|
||||
use crate::document::documents::get_root_document;
|
||||
|
||||
#[test]
|
||||
fn new_message() {
|
||||
@@ -182,24 +175,10 @@ mod messages {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn from_request_no_session() {
|
||||
let req = get_root_document();
|
||||
let msg: Message = req.into();
|
||||
assert!(
|
||||
msg.get_data("sess_id").is_none(),
|
||||
"should not have a session id"
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn from_request_with_session() {
|
||||
let id = Uuid::new_v4();
|
||||
let req = get_root_document_eith_session(id.clone());
|
||||
let msg: Message = req.into();
|
||||
match msg.get_data("sess_id") {
|
||||
Some(result) => assert_eq!(result.to_uuid().unwrap(), id),
|
||||
None => unreachable!("should return an id"),
|
||||
}
|
||||
fn reset_msg_id() {
|
||||
let mut msg = Message::new(MsgType::Time);
|
||||
msg.reset_id(Uuid::nil());
|
||||
assert_eq!(msg.get_id(), Uuid::nil());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user