Got session control into it's own layer.

This commit is contained in:
2025-04-21 21:44:52 -04:00
parent 4fc050e590
commit 393b66a9f5
6 changed files with 168 additions and 369 deletions

View File

@@ -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());
}
}