Almost working, I've got a blocking I/O problem with stdin now :)
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
use bft_json_crdt::json_crdt::BaseCrdt;
|
||||
use bft_json_crdt::json_crdt::{BaseCrdt, SignedOp};
|
||||
use cli::{parse_args, Commands};
|
||||
use crdt::TransactionList;
|
||||
use fastcrypto::ed25519::Ed25519KeyPair;
|
||||
use node::SideNode;
|
||||
use tokio::sync::mpsc;
|
||||
use websocket::WebSocketClient;
|
||||
|
||||
pub(crate) mod cli;
|
||||
@@ -26,20 +26,21 @@ async fn main() {
|
||||
let _ = init::init(utils::home(name), config);
|
||||
}
|
||||
Some(Commands::Run { name }) => {
|
||||
let (crdt, websocket_client, keys) = setup(name);
|
||||
let side_node = &mut SideNode::new(websocket_client, crdt, keys);
|
||||
side_node.start().await;
|
||||
let mut node = setup(name).await;
|
||||
node.start().await;
|
||||
}
|
||||
None => println!("No command provided. Exiting. See --help for more information."),
|
||||
}
|
||||
}
|
||||
|
||||
/// Wire everything up outside the application so we can test more easily later
|
||||
fn setup(name: &String) -> (BaseCrdt<TransactionList>, WebSocketClient, Ed25519KeyPair) {
|
||||
async fn setup(name: &String) -> SideNode {
|
||||
let side_dir = utils::home(name);
|
||||
let keys = keys::load_from_file(side_dir);
|
||||
let websocket_client = WebSocketClient::new();
|
||||
let (incoming_sender, incoming_receiver) = mpsc::channel::<SignedOp>(32);
|
||||
let crdt = BaseCrdt::<TransactionList>::new(&keys);
|
||||
|
||||
(crdt, websocket_client, keys)
|
||||
let mut node = SideNode::new(crdt, keys, incoming_receiver);
|
||||
println!("Node setup complete.");
|
||||
WebSocketClient::start(&mut node, incoming_sender).await;
|
||||
node
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user