Abandoned path. Senders can only be moved oncde.

This commit is contained in:
2025-03-26 17:42:34 -04:00
parent d824220fab
commit c9de11ff61
12 changed files with 1564 additions and 676 deletions

View File

@ -1,3 +1,91 @@
use crate::{
queue::{Message, MessageData},
ClientMessage,
};
use std::{
sync::mpsc::{channel, Receiver, Sender},
thread::spawn,
};
pub struct Reply;
impl Reply {
pub fn get_session(&self) -> String {
"id".to_string()
}
pub fn get_content(&self) -> String {
"Something goes here.".to_string()
}
}
struct Client {
tx: Sender<Message>,
rx: Receiver<Message>
}
impl Client {
fn new(tx: Sender<Message>, rx: Receiver<Message>) -> Self {
Self {
tx: tx,
rx: rx,
}
}
fn start(queue_tx: Sender<Message>) {
spawn(move || {
let (tx, rx) = channel();
let service = Self::new(queue_tx.clone(), rx);
queue_tx.send(Message::new(tx.into())).unwrap();
service.listen();
});
}
fn listen(&self) {
loop {
let msg = self.rx.recv().unwrap();
match msg.get_data() {
MessageData::ClientMsg(output) => {
match output {
ClientMessage::Req(data) => {
let result = crate::client::Reply {};
data.tx.send(result).unwrap();
},
}
},
_ => {},
}
}
}
}
#[cfg(test)]
mod clients {
use crate::create_requests::root_doc_no_sess;
use super::*;
fn setup_client() -> (Sender<Message>, Receiver<Message>) {
let (tx, rx) = channel();
Client::start(tx);
let client_tx = match rx.recv().unwrap().get_data() {
MessageData::Register(result) => result.clone(),
_ => unreachable!("Register service first"),
};
(client_tx, rx)
}
#[test]
fn new_root_doc_request() {
let (tx, rx) = setup_client();
let (req, client_rx) = root_doc_no_sess();
tx.send(Message::new(req.into())).unwrap();
client_rx.recv().unwrap();
}
}
/*
use super::{Message, Msg, MsgData, SessionMsg};
use std::{
collections::HashMap,
@ -155,3 +243,4 @@ mod messages {
}
}
}
*/