Abandoned path. Senders can only be moved oncde.
This commit is contained in:
@ -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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
Reference in New Issue
Block a user