diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cli.rs (renamed from src/ui.rs) | 35 | ||||
| -rw-r--r-- | src/daemon.rs | 18 | ||||
| -rw-r--r-- | src/main.rs | 44 |
3 files changed, 52 insertions, 45 deletions
@@ -1,4 +1,8 @@ -use std::sync::{Arc, Weak}; +use crate::daemon::init; +use std::{ + io, + sync::{Arc, Weak}, +}; use bitcoin::{ client::Client, @@ -7,6 +11,8 @@ use bitcoin::{ }; use tokio::sync::Mutex; +pub mod daemon; + pub struct Ui { network: Weak<Mutex<Network>>, me: Client, @@ -97,3 +103,30 @@ impl Ui { None } } + +#[tokio::main] +async fn main() { + let network = init().await; + + let mut ui = Ui::new( + Arc::downgrade(&network), + *network + .lock() + .await + .get_me(), + ); + + loop { + let mut cmd = String::new(); + io::stdin() + .read_line(&mut cmd) + .unwrap(); + + if let Some(req) = ui + .cmd(&cmd) + .await + { + Network::broadcast(network.clone(), req).await; + } + } +} diff --git a/src/daemon.rs b/src/daemon.rs new file mode 100644 index 0000000..156e283 --- /dev/null +++ b/src/daemon.rs @@ -0,0 +1,18 @@ +use std::sync::Arc; + +use bitcoin::{ + blocks::BlockChain, + network::{Network, Request}, +}; +use tokio::sync::Mutex; + +pub async fn init() -> Arc<Mutex<Network>> { + let bc = Arc::new(Mutex::new(BlockChain::default())); + let network = Network::new(bc).await; + + Network::start(network.clone()); + + Network::broadcast(network.clone(), Request::Ibd(None)).await; + + network +} diff --git a/src/main.rs b/src/main.rs deleted file mode 100644 index 8f8ddf2..0000000 --- a/src/main.rs +++ /dev/null @@ -1,44 +0,0 @@ -use std::{io, sync::Arc}; - -use bitcoin::{ - blocks::BlockChain, - network::{Network, Request}, -}; -use tokio::sync::Mutex; - -use crate::ui::Ui; - -pub mod ui; - -#[tokio::main] -async fn main() { - let bc = Arc::new(Mutex::new(BlockChain::default())); - let network = Network::new(bc).await; - - Network::start(network.clone()); - - Network::broadcast(network.clone(), Request::Ibd(None)).await; - - let me = { - let net = network - .lock() - .await; - *net.get_me() - }; - - let mut ui = Ui::new(Arc::downgrade(&network), me); - - loop { - let mut cmd = String::new(); - io::stdin() - .read_line(&mut cmd) - .unwrap(); - - if let Some(req) = ui - .cmd(&cmd) - .await - { - Network::broadcast(network.clone(), req).await; - } - } -} |
