From 8975979fcdd72f8a93184b3129531fd63eb058c5 Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Thu, 20 Jun 2024 11:06:20 +0200 Subject: [PATCH] `rustfmt`: Run on `lightning-block-sync/src/gossip.rs` --- lightning-block-sync/src/gossip.rs | 97 +++++++++++++++++------------- rustfmt_excluded_files | 1 - 2 files changed, 54 insertions(+), 44 deletions(-) diff --git a/lightning-block-sync/src/gossip.rs b/lightning-block-sync/src/gossip.rs index 0dc98832e..657a413fd 100644 --- a/lightning-block-sync/src/gossip.rs +++ b/lightning-block-sync/src/gossip.rs @@ -6,21 +6,21 @@ use crate::{AsyncBlockSourceResult, BlockData, BlockSource, BlockSourceError}; use bitcoin::blockdata::block::Block; use bitcoin::blockdata::constants::ChainHash; -use bitcoin::blockdata::transaction::{TxOut, OutPoint}; +use bitcoin::blockdata::transaction::{OutPoint, TxOut}; use bitcoin::hash_types::BlockHash; use lightning::ln::peer_handler::APeerManager; use lightning::routing::gossip::{NetworkGraph, P2PGossipSync}; -use lightning::routing::utxo::{UtxoFuture, UtxoLookup, UtxoResult, UtxoLookupError}; +use lightning::routing::utxo::{UtxoFuture, UtxoLookup, UtxoLookupError, UtxoResult}; use lightning::util::logger::Logger; -use std::sync::{Arc, Mutex}; use std::collections::VecDeque; use std::future::Future; use std::ops::Deref; use std::pin::Pin; +use std::sync::{Arc, Mutex}; use std::task::Poll; /// A trait which extends [`BlockSource`] and can be queried to fetch the block at a given height @@ -29,12 +29,14 @@ use std::task::Poll; /// Note that while this is implementable for a [`BlockSource`] which returns filtered block data /// (i.e. [`BlockData::HeaderOnly`] for [`BlockSource::get_block`] requests), such an /// implementation will reject all gossip as it is not fully able to verify the UTXOs referenced. -pub trait UtxoSource : BlockSource + 'static { +pub trait UtxoSource: BlockSource + 'static { /// Fetches the block hash of the block at the given height. /// /// This will, in turn, be passed to to [`BlockSource::get_block`] to fetch the block needed /// for gossip validation. - fn get_block_hash_by_height<'a>(&'a self, block_height: u32) -> AsyncBlockSourceResult<'a, BlockHash>; + fn get_block_hash_by_height<'a>( + &'a self, block_height: u32, + ) -> AsyncBlockSourceResult<'a, BlockHash>; /// Returns true if the given output has *not* been spent, i.e. is a member of the current UTXO /// set. @@ -45,7 +47,7 @@ pub trait UtxoSource : BlockSource + 'static { /// /// If the `tokio` feature is enabled, this is implemented on `TokioSpawner` struct which /// delegates to `tokio::spawn()`. -pub trait FutureSpawner : Send + Sync + 'static { +pub trait FutureSpawner: Send + Sync + 'static { /// Spawns the given future as a background task. /// /// This method MUST NOT block on the given future immediately. @@ -65,8 +67,8 @@ impl FutureSpawner for TokioSpawner { /// A trivial future which joins two other futures and polls them at the same time, returning only /// once both complete. pub(crate) struct Joiner< - A: Future), BlockSourceError>> + Unpin, - B: Future> + Unpin, + A: Future), BlockSourceError>> + Unpin, + B: Future> + Unpin, > { pub a: A, pub b: B, @@ -75,16 +77,20 @@ pub(crate) struct Joiner< } impl< - A: Future), BlockSourceError>> + Unpin, - B: Future> + Unpin, -> Joiner { - fn new(a: A, b: B) -> Self { Self { a, b, a_res: None, b_res: None } } + A: Future), BlockSourceError>> + Unpin, + B: Future> + Unpin, + > Joiner +{ + fn new(a: A, b: B) -> Self { + Self { a, b, a_res: None, b_res: None } + } } impl< - A: Future), BlockSourceError>> + Unpin, - B: Future> + Unpin, -> Future for Joiner { + A: Future), BlockSourceError>> + Unpin, + B: Future> + Unpin, + > Future for Joiner +{ type Output = Result<((BlockHash, Option), BlockHash), BlockSourceError>; fn poll(mut self: Pin<&mut Self>, ctx: &mut core::task::Context<'_>) -> Poll { if self.a_res.is_none() { @@ -107,14 +113,13 @@ impl< } else { return Poll::Ready(Err(res.unwrap_err())); } - }, Poll::Pending => {}, } } if let Some(b_res) = self.b_res { if let Some(a_res) = self.a_res { - return Poll::Ready(Ok((a_res, b_res))) + return Poll::Ready(Ok((a_res, b_res))); } } Poll::Pending @@ -129,7 +134,8 @@ impl< /// value of 1024 should more than suffice), and ensure you have sufficient file descriptors /// available on both Bitcoin Core and your LDK application for each request to hold its own /// connection. -pub struct GossipVerifier where @@ -145,10 +151,9 @@ pub struct GossipVerifier GossipVerifier where +impl + GossipVerifier +where Blocks::Target: UtxoSource, L::Target: Logger, { @@ -157,17 +162,24 @@ impl( - source: Blocks, spawn: S, gossiper: Arc>, Self, L>>, peer_manager: APM - ) -> Self where APM::Target: APeerManager { + source: Blocks, spawn: S, gossiper: Arc>, Self, L>>, + peer_manager: APM, + ) -> Self + where + APM::Target: APeerManager, + { let peer_manager_wake = Arc::new(move || peer_manager.as_ref().process_events()); Self { - source, spawn, gossiper, peer_manager_wake, + source, + spawn, + gossiper, + peer_manager_wake, block_cache: Arc::new(Mutex::new(VecDeque::with_capacity(BLOCK_CACHE_SIZE))), } } async fn retrieve_utxo( - source: Blocks, block_cache: Arc>>, short_channel_id: u64 + source: Blocks, block_cache: Arc>>, short_channel_id: u64, ) -> Result { let block_height = (short_channel_id >> 5 * 8) as u32; // block height is most significant three bytes let transaction_index = ((short_channel_id >> 2 * 8) & 0xffffff) as u32; @@ -177,7 +189,7 @@ impl { { + ($block: expr) => {{ if transaction_index as usize >= $block.txdata.len() { return Err(UtxoLookupError::UnknownTx); } @@ -188,7 +200,7 @@ impl return Err(UtxoLookupError::UnknownTx), BlockData::FullBlock(block) => block, @@ -237,7 +249,7 @@ impl Deref for GossipVerifier where +impl Deref + for GossipVerifier +where Blocks::Target: UtxoSource, L::Target: Logger, { type Target = Self; - fn deref(&self) -> &Self { self } + fn deref(&self) -> &Self { + self + } } - -impl UtxoLookup for GossipVerifier where +impl UtxoLookup + for GossipVerifier +where Blocks::Target: UtxoSource, L::Target: Logger, { diff --git a/rustfmt_excluded_files b/rustfmt_excluded_files index 25f8939a5..06a4fb916 100644 --- a/rustfmt_excluded_files +++ b/rustfmt_excluded_files @@ -1,5 +1,4 @@ ./lightning-background-processor/src/lib.rs -./lightning-block-sync/src/gossip.rs ./lightning-block-sync/src/http.rs ./lightning-block-sync/src/init.rs ./lightning-block-sync/src/lib.rs -- 2.39.5