From d8f651c145dedb6483b4e0b9928f5c62a10a8db2 Mon Sep 17 00:00:00 2001 From: Ash Manning Date: Fri, 5 Apr 2024 19:05:47 +0800 Subject: [PATCH] fix networking, bump bip300301 dep, bump version number --- Cargo.lock | 7 ++-- Cargo.toml | 4 +- app/app.rs | 6 ++- app/main.rs | 1 + lib/net.rs | 1 + lib/node.rs | 106 ++++++++++++++++++++++++++++------------------------ 6 files changed, 70 insertions(+), 55 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50720bd..59cccff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "bip300301" version = "0.1.1" -source = "git+https://github.com/Ash-L2L/bip300301.git?rev=c6e410e702f3d22f5801f21ffdf39edece3985df#c6e410e702f3d22f5801f21ffdf39edece3985df" +source = "git+https://github.com/Ash-L2L/bip300301.git?rev=43ba4d7bee075ecd2504f87b5ec2a5ba3b10cd3b#43ba4d7bee075ecd2504f87b5ec2a5ba3b10cd3b" dependencies = [ "base64 0.21.7", "bitcoin", @@ -647,6 +647,7 @@ dependencies = [ "serde_json", "thiserror", "tokio", + "tracing", ] [[package]] @@ -3587,7 +3588,7 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plain_bitnames" -version = "0.5.12" +version = "0.5.13" dependencies = [ "addr", "anyhow", @@ -3626,7 +3627,7 @@ dependencies = [ [[package]] name = "plain_bitnames_app" -version = "0.5.12" +version = "0.5.13" dependencies = [ "anyhow", "async_zmq", diff --git a/Cargo.toml b/Cargo.toml index 51ba13d..5ab1597 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,11 +8,11 @@ members = [ [workspace.package] authors = [ "Ash Manning " ] edition = "2021" -version = "0.5.12" +version = "0.5.13" [workspace.dependencies.bip300301] git = "https://github.com/Ash-L2L/bip300301.git" -rev = "c6e410e702f3d22f5801f21ffdf39edece3985df" +rev = "43ba4d7bee075ecd2504f87b5ec2a5ba3b10cd3b" [profile.release] # lto = "fat" \ No newline at end of file diff --git a/app/app.rs b/app/app.rs index d7dac55..fedda37 100644 --- a/app/app.rs +++ b/app/app.rs @@ -81,6 +81,10 @@ impl App { }; Ok(node) })?; + let node = Arc::new(node); + let rt_guard = runtime.enter(); + node.clone().run()?; + drop(rt_guard); let utxos = { let mut utxos = wallet.get_utxos()?; let transactions = node.get_all_transactions()?; @@ -92,7 +96,7 @@ impl App { Arc::new(RwLock::new(utxos)) }; Ok(Self { - node: Arc::new(node), + node, wallet: Arc::new(wallet), miner: Arc::new(TokioRwLock::new(miner)), utxos, diff --git a/app/main.rs b/app/main.rs index c326df7..6c4b011 100644 --- a/app/main.rs +++ b/app/main.rs @@ -14,6 +14,7 @@ use logs::{CaptureWriter, LogsCapture}; // Configure logger fn set_tracing_subscriber(log_level: tracing::Level) -> LogsCapture { let targets_filter = tracing_filter::Targets::new().with_targets([ + ("bip300301", log_level), ("jsonrpsee_core::tracing", log_level), ("plain_bitnames", log_level), ("plain_bitnames_app", log_level), diff --git a/lib/net.rs b/lib/net.rs index 2be1232..276a95e 100644 --- a/lib/net.rs +++ b/lib/net.rs @@ -117,6 +117,7 @@ impl Net { } } let connection = self.client.connect(addr, "localhost")?.await?; + tracing::debug!("Connected to peer at {addr}"); let peer = Peer { state: Arc::new(RwLock::new(None)), connection, diff --git a/lib/node.rs b/lib/node.rs index 06aa116..fb5396f 100644 --- a/lib/node.rs +++ b/lib/node.rs @@ -429,37 +429,6 @@ impl Node { Ok(()) } - pub async fn connect_peer(&self, addr: SocketAddr) -> Result<(), Error> { - let peer = self.net.connect_peer(addr).await?; - let peer0 = peer.clone(); - let node0 = self.clone(); - tokio::spawn(async move { - loop { - match node0.peer_listen(&peer0).await { - Ok(_) => {} - Err(err) => { - println!("{:?}", err); - break; - } - } - } - }); - let peer0 = peer.clone(); - let node0 = self.clone(); - tokio::spawn(async move { - loop { - match node0.heart_beat_listen(&peer0).await { - Ok(_) => {} - Err(err) => { - println!("{:?}", err); - break; - } - } - } - }); - Ok(()) - } - pub async fn heart_beat_listen( &self, peer: &crate::net::Peer, @@ -482,6 +451,41 @@ impl Node { Ok(()) } + pub async fn connect_peer(&self, addr: SocketAddr) -> Result<(), Error> { + let peer = self.net.connect_peer(addr).await?; + tokio::spawn({ + let node = self.clone(); + let peer = peer.clone(); + async move { + loop { + match node.peer_listen(&peer).await { + Ok(_) => {} + Err(err) => { + println!("{:?}", err); + break; + } + } + } + } + }); + tokio::spawn({ + let node = self.clone(); + let peer = peer.clone(); + async move { + loop { + match node.heart_beat_listen(&peer).await { + Ok(_) => {} + Err(err) => { + println!("{:?}", err); + break; + } + } + } + } + }); + Ok(()) + } + pub async fn peer_listen( &self, peer: &crate::net::Peer, @@ -599,28 +603,32 @@ impl Node { state: Arc::new(RwLock::new(None)), connection, }; - let node0 = node.clone(); - let peer0 = peer.clone(); - tokio::spawn(async move { - loop { - match node0.peer_listen(&peer0).await { - Ok(_) => {} - Err(err) => { - println!("{:?}", err); - break; + tokio::spawn({ + let node = node.clone(); + let peer = peer.clone(); + async move { + loop { + match node.peer_listen(&peer).await { + Ok(_) => {} + Err(err) => { + println!("{:?}", err); + break; + } } } } }); - let node0 = node.clone(); - let peer0 = peer.clone(); - tokio::spawn(async move { - loop { - match node0.heart_beat_listen(&peer0).await { - Ok(_) => {} - Err(err) => { - println!("{:?}", err); - break; + tokio::spawn({ + let node = node.clone(); + let peer = peer.clone(); + async move { + loop { + match node.heart_beat_listen(&peer).await { + Ok(_) => {} + Err(err) => { + println!("{:?}", err); + break; + } } } }