Merge pull request #79 from MaxFangX/fix-blocksource-impl
authorJeffrey Czyz <jkczyz@gmail.com>
Tue, 18 Oct 2022 14:35:12 +0000 (09:35 -0500)
committerGitHub <noreply@github.com>
Tue, 18 Oct 2022 14:35:12 +0000 (09:35 -0500)
impl `BlockSource` on `BitcoindClient` instead of `&BitcoindClient`

1  2 
src/main.rs

diff --combined src/main.rs
index 6cff9f152492058c156e7fb1cf48ccb4e3910f38,62299676db0df9c917977f54a5865e803a1affdd..9ecc5e39a9f1444332601d29d662b46048cc5add
@@@ -48,7 -48,6 +48,6 @@@ use std::fs
  use std::fs::File;
  use std::io;
  use std::io::Write;
- use std::ops::Deref;
  use std::path::Path;
  use std::sync::atomic::{AtomicBool, Ordering};
  use std::sync::{Arc, Mutex};
@@@ -509,10 -508,8 +508,10 @@@ async fn start_ldk() 
        let mut cache = UnboundedCache::new();
        let mut chain_tip: Option<poll::ValidatedBlockHeader> = None;
        if restarting_node {
 -              let mut chain_listeners =
 -                      vec![(channel_manager_blockhash, &channel_manager as &dyn chain::Listen)];
 +              let mut chain_listeners = vec![(
 +                      channel_manager_blockhash,
 +                      &channel_manager as &(dyn chain::Listen + Send + Sync),
 +              )];
  
                for (blockhash, channel_monitor) in channelmonitors.drain(..) {
                        let outpoint = channel_monitor.get_funding_txo().0;
                }
  
                for monitor_listener_info in chain_listener_channel_monitors.iter_mut() {
 -                      chain_listeners
 -                              .push((monitor_listener_info.0, &monitor_listener_info.1 as &dyn chain::Listen));
 +                      chain_listeners.push((
 +                              monitor_listener_info.0,
 +                              &monitor_listener_info.1 as &(dyn chain::Listen + Send + Sync),
 +                      ));
                }
                chain_tip = Some(
                        init::synchronize_listeners(
-                               &mut bitcoind_client.deref(),
+                               bitcoind_client.as_ref(),
                                args.network,
                                &mut cache,
                                chain_listeners,
  
        // Step 14: Connect and Disconnect Blocks
        if chain_tip.is_none() {
-               chain_tip =
-                       Some(init::validate_best_block_header(&mut bitcoind_client.deref()).await.unwrap());
+               chain_tip = Some(init::validate_best_block_header(bitcoind_client.as_ref()).await.unwrap());
        }
        let channel_manager_listener = channel_manager.clone();
        let chain_monitor_listener = chain_monitor.clone();
        let bitcoind_block_source = bitcoind_client.clone();
        let network = args.network;
        tokio::spawn(async move {
-               let mut derefed = bitcoind_block_source.deref();
-               let chain_poller = poll::ChainPoller::new(&mut derefed, network);
+               let chain_poller = poll::ChainPoller::new(bitcoind_block_source.as_ref(), network);
                let chain_listener = (chain_monitor_listener, channel_manager_listener);
                let mut spv_client =
                        SpvClient::new(chain_tip.unwrap(), chain_poller, &mut cache, &chain_listener);