Parameterize NetworkGraph with Logger
[rust-lightning] / lightning-rapid-gossip-sync / src / lib.rs
index 278cede397411720415b89d20a6c9ccaecb1160d..7880e11a60ea45c824dfceb3e75d6ee9d48610c8 100644 (file)
 //! use lightning::routing::gossip::NetworkGraph;
 //! use lightning_rapid_gossip_sync::RapidGossipSync;
 //!
+//! # use lightning::util::logger::{Logger, Record};
+//! # struct FakeLogger {}
+//! # impl Logger for FakeLogger {
+//! #     fn log(&self, record: &Record) { unimplemented!() }
+//! # }
+//! # let logger = FakeLogger {};
+//!
 //! let block_hash = genesis_block(Network::Bitcoin).header.block_hash();
-//! let network_graph = NetworkGraph::new(block_hash);
+//! let network_graph = NetworkGraph::new(block_hash, &logger);
 //! let rapid_sync = RapidGossipSync::new(&network_graph);
 //! let new_last_sync_timestamp_result = rapid_sync.sync_network_graph_with_file_path("./rapid_sync.lngossip");
 //! ```
@@ -63,6 +70,7 @@ use std::ops::Deref;
 use std::sync::atomic::{AtomicBool, Ordering};
 
 use lightning::routing::gossip::NetworkGraph;
+use lightning::util::logger::Logger;
 
 use crate::error::GraphSyncError;
 
@@ -76,12 +84,13 @@ pub mod processing;
 /// See [crate-level documentation] for usage.
 ///
 /// [crate-level documentation]: crate
-pub struct RapidGossipSync<NG: Deref<Target=NetworkGraph>> {
+pub struct RapidGossipSync<NG: Deref<Target=NetworkGraph<L>>, L: Deref>
+where L::Target: Logger {
        network_graph: NG,
        is_initial_sync_complete: AtomicBool
 }
 
-impl<NG: Deref<Target=NetworkGraph>> RapidGossipSync<NG> {
+impl<NG: Deref<Target=NetworkGraph<L>>, L: Deref> RapidGossipSync<NG, L> where L::Target: Logger {
        /// Instantiate a new [`RapidGossipSync`] instance
        pub fn new(network_graph: NG) -> Self {
                Self {
@@ -128,6 +137,7 @@ mod tests {
 
        use lightning::ln::msgs::DecodeError;
        use lightning::routing::gossip::NetworkGraph;
+       use lightning::util::test_utils::TestLogger;
        use crate::RapidGossipSync;
 
        #[test]
@@ -187,7 +197,8 @@ mod tests {
                let graph_sync_test_file = sync_test.get_test_file_path();
 
                let block_hash = genesis_block(Network::Bitcoin).block_hash();
-               let network_graph = NetworkGraph::new(block_hash);
+               let logger = TestLogger::new();
+               let network_graph = NetworkGraph::new(block_hash, &logger);
 
                assert_eq!(network_graph.read_only().channels().len(), 0);
 
@@ -219,7 +230,8 @@ mod tests {
        #[test]
        fn measure_native_read_from_file() {
                let block_hash = genesis_block(Network::Bitcoin).block_hash();
-               let network_graph = NetworkGraph::new(block_hash);
+               let logger = TestLogger::new();
+               let network_graph = NetworkGraph::new(block_hash, &logger);
 
                assert_eq!(network_graph.read_only().channels().len(), 0);
 
@@ -254,14 +266,16 @@ pub mod bench {
 
        use lightning::ln::msgs::DecodeError;
        use lightning::routing::gossip::NetworkGraph;
+       use lightning::util::test_utils::TestLogger;
 
        use crate::RapidGossipSync;
 
        #[bench]
        fn bench_reading_full_graph_from_file(b: &mut Bencher) {
                let block_hash = genesis_block(Network::Bitcoin).block_hash();
+               let logger = TestLogger::new();
                b.iter(|| {
-                       let network_graph = NetworkGraph::new(block_hash);
+                       let network_graph = NetworkGraph::new(block_hash, &logger);
                        let rapid_sync = RapidGossipSync::new(&network_graph);
                        let sync_result = rapid_sync.sync_network_graph_with_file_path("./res/full_graph.lngossip");
                        if let Err(crate::error::GraphSyncError::DecodeError(DecodeError::Io(io_error))) = &sync_result {