From a82cf5141357c1c7337189ac57bf5197b8fc9bfb Mon Sep 17 00:00:00 2001 From: Jeff Baskin Date: Fri, 11 Apr 2025 22:06:36 -0400 Subject: [PATCH] Started to document service. --- src/document.rs | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + src/queue.rs | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 src/document.rs diff --git a/src/document.rs b/src/document.rs new file mode 100644 index 0000000..19cfe8c --- /dev/null +++ b/src/document.rs @@ -0,0 +1,50 @@ +use crate::{ + field::Field, + queue::{Message, MsgType, Queue}, +}; +use std::{ + sync::mpsc::{channel, Receiver}, + thread::spawn, +}; + +const RESPONDS_TO: [MsgType; 1] = [MsgType::DocumentRequest]; + +struct Document { + queue: Queue, + rx: Receiver, +} + +impl Document { + fn new(queue: Queue, rx: Receiver) -> Self { + Self { + queue: queue, + rx: rx, + } + } + + pub fn start(queue: Queue) { + let (tx, rx) = channel(); + let mut document = Document::new(queue, rx); + document.queue.add(tx, RESPONDS_TO.to_vec()); + spawn(move || { + document.listen(); + }); + } + + fn listen(&mut self) { + loop { + let msg = self.rx.recv().unwrap(); + } + } +} + +#[cfg(test)] +mod documents { + use super::*; + + #[test] + fn start_service() { + let queue = Queue::new(); + Document::start(queue); + } +} diff --git a/src/lib.rs b/src/lib.rs index 5deed41..b3e2ee2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ mod client; mod clock; +mod document; mod field; mod queue; mod session; diff --git a/src/queue.rs b/src/queue.rs index ad15aa6..e5d551f 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -8,6 +8,8 @@ use uuid::Uuid; #[derive(Clone, Debug, Eq, Hash, PartialEq)] pub enum MsgType { ClientRequest, + ClientDoc, + DocumentRequest, SessionValidate, Session, Time,