X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Flib.rs;h=363d4aeb9e94ddb2c8a1baddad45027eb2ac7129;hb=2cf9129a187a66cfed10f9583c14fc8ee7339a18;hp=37bbe4cb0338170998acef7ae0032c7056f7ea86;hpb=db63107f5807066ed9eeb7e4212dd0bfbae5ad8a;p=rapid-gossip-sync-server diff --git a/src/lib.rs b/src/lib.rs index 37bbe4c..363d4ae 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,6 +15,7 @@ use std::io::BufReader; use std::sync::Arc; use lightning::routing::gossip::{NetworkGraph, NodeId}; +use lightning::util::logger::Logger; use lightning::util::ser::{ReadableArgs, Writeable}; use tokio::sync::mpsc; use crate::lookup::DeltaSet; @@ -22,10 +23,9 @@ use crate::lookup::DeltaSet; use crate::persistence::GossipPersister; use crate::serialization::UpdateSerialization; use crate::snapshot::Snapshotter; -use crate::types::TestLogger; +use crate::types::RGSSLogger; mod downloader; -mod types; mod tracking; mod lookup; mod persistence; @@ -35,14 +35,17 @@ mod config; mod hex_utils; mod verifier; +pub mod types; + /// The purpose of this prefix is to identify the serialization format, should other rapid gossip /// sync formats arise in the future. /// /// The fourth byte is the protocol version in case our format gets updated. const GOSSIP_PREFIX: [u8; 4] = [76, 68, 75, 1]; -pub struct RapidSyncProcessor { - network_graph: Arc>, +pub struct RapidSyncProcessor { + network_graph: Arc>>, + logger: Arc } pub struct SerializedResponse { @@ -54,27 +57,27 @@ pub struct SerializedResponse { pub update_count_incremental: u32, } -impl RapidSyncProcessor { - pub fn new() -> Self { +impl RapidSyncProcessor { + pub fn new(logger: Arc) -> Self { let network = config::network(); - let logger = TestLogger::new(); let network_graph = if let Ok(file) = File::open(&config::network_graph_cache_path()) { println!("Initializing from cached network graph…"); let mut buffered_reader = BufReader::new(file); - let network_graph_result = NetworkGraph::read(&mut buffered_reader, logger); + let network_graph_result = NetworkGraph::read(&mut buffered_reader, logger.clone()); if let Ok(network_graph) = network_graph_result { println!("Initialized from cached network graph!"); network_graph } else { println!("Initialization from cached network graph failed: {}", network_graph_result.err().unwrap()); - NetworkGraph::new(network, logger) + NetworkGraph::new(network, logger.clone()) } } else { - NetworkGraph::new(network, logger) + NetworkGraph::new(network, logger.clone()) }; let arc_network_graph = Arc::new(network_graph); Self { network_graph: arc_network_graph, + logger } } @@ -87,7 +90,7 @@ impl RapidSyncProcessor { println!("Starting gossip download"); tokio::spawn(tracking::download_gossip(persistence_sender, sync_completion_sender, - Arc::clone(&self.network_graph))); + Arc::clone(&self.network_graph), Arc::clone(&self.logger))); println!("Starting gossip db persistence listener"); tokio::spawn(async move { persister.persist_gossip().await; }); } else { @@ -126,7 +129,7 @@ fn serialize_empty_blob(current_timestamp: u64) -> Vec { let chain_hash = genesis_block.block_hash(); chain_hash.write(&mut blob).unwrap(); - let blob_timestamp = Snapshotter::round_down_to_nearest_multiple(current_timestamp, config::SNAPSHOT_CALCULATION_INTERVAL as u64) as u32; + let blob_timestamp = Snapshotter::::round_down_to_nearest_multiple(current_timestamp, config::SNAPSHOT_CALCULATION_INTERVAL as u64) as u32; blob_timestamp.write(&mut blob).unwrap(); 0u32.write(&mut blob).unwrap(); // node count @@ -136,7 +139,7 @@ fn serialize_empty_blob(current_timestamp: u64) -> Vec { blob } -async fn serialize_delta(network_graph: Arc>, last_sync_timestamp: u32) -> SerializedResponse { +async fn serialize_delta(network_graph: Arc>>, last_sync_timestamp: u32) -> SerializedResponse { let (client, connection) = lookup::connect_to_db().await; network_graph.remove_stale_channels_and_tracking();