Restructuring tokio tasks and stdin receiver
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
use std::{io::BufRead, thread};
|
||||
|
||||
use bft_json_crdt::json_crdt::{BaseCrdt, SignedOp};
|
||||
use cli::{parse_args, Commands};
|
||||
use crdt::TransactionList;
|
||||
use node::SideNode;
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::{sync::mpsc, task};
|
||||
use websocket::WebSocketClient;
|
||||
|
||||
pub(crate) mod cli;
|
||||
@@ -38,13 +40,31 @@ async fn setup(name: &String) -> SideNode {
|
||||
let side_dir = utils::home(name);
|
||||
let keys = keys::load_from_file(side_dir);
|
||||
let (incoming_sender, incoming_receiver) = mpsc::channel::<SignedOp>(32);
|
||||
|
||||
let (stdin_sender, stdin_receiver) = std::sync::mpsc::channel();
|
||||
task::spawn(async move {
|
||||
stdin_input(stdin_sender);
|
||||
});
|
||||
|
||||
let crdt = BaseCrdt::<TransactionList>::new(&keys);
|
||||
let node = SideNode::new(crdt, keys, incoming_receiver);
|
||||
WebSocketClient::start(incoming_sender).await;
|
||||
let node = SideNode::new(crdt, keys, incoming_receiver, stdin_receiver);
|
||||
tokio::spawn(async move {
|
||||
WebSocketClient::start(incoming_sender).await;
|
||||
});
|
||||
println!("Node setup complete.");
|
||||
node
|
||||
}
|
||||
|
||||
fn stdin_input(stdin_input_sender: std::sync::mpsc::Sender<String>) {
|
||||
let stdin = std::io::stdin();
|
||||
let lines = stdin.lock().lines();
|
||||
for line in lines {
|
||||
println!("We're in stdin_input");
|
||||
let line = line.unwrap();
|
||||
stdin_input_sender.send(line).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
// async fn maybe_autosend(
|
||||
// autosend: bool,
|
||||
// handle: ezsockets::Client<websocket::WebSocketClient>,
|
||||
|
||||
Reference in New Issue
Block a user