X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain.rs;h=3932a58192432302f4f426cf690666e672157731;hb=93d3b7942b2a0a4990e5a93fda262f9edb671364;hp=892fd0ebe3b55ddce50c8a9222283bc73169787d;hpb=bc07db6ca4a3323d8718a27f85182b8157a20750;p=ldk-sample diff --git a/src/main.rs b/src/main.rs index 892fd0e..3932a58 100644 --- a/src/main.rs +++ b/src/main.rs @@ -426,13 +426,33 @@ async fn start_ldk() { } // Step 11: Optional: Initialize the NetGraphMsgHandler - // XXX persist routing data let genesis = genesis_block(args.network).header.block_hash(); - let router = Arc::new(NetGraphMsgHandler::new( - genesis, + let network_graph_path = format!("{}/network_graph", ldk_data_dir.clone()); + let network_graph = disk::read_network(Path::new(&network_graph_path), genesis); + let router = Arc::new(NetGraphMsgHandler::from_net_graph( None::>, logger.clone(), + network_graph, )); + let router_persist = Arc::clone(&router); + tokio::spawn(async move { + let mut interval = tokio::time::interval(Duration::from_secs(600)); + loop { + interval.tick().await; + if disk::persist_network( + Path::new(&network_graph_path), + &*router_persist.network_graph.read().unwrap(), + ) + .is_err() + { + // Persistence errors here are non-fatal as we can just fetch the routing graph + // again later, but they may indicate a disk error which could be fatal elsewhere. + eprintln!( + "Warning: Failed to persist network graph, check your disk and permissions" + ); + } + } + }); // Step 12: Initialize the PeerManager let channel_manager: Arc = Arc::new(channel_manager); @@ -549,7 +569,7 @@ async fn start_ldk() { // to avoid churn in the global network graph. let chan_manager = Arc::clone(&channel_manager); let network = args.network; - if args.ldk_announced_listen_addr.is_some() { + if !args.ldk_announced_listen_addr.is_empty() { tokio::spawn(async move { let mut interval = tokio::time::interval(Duration::from_secs(60)); loop { @@ -557,7 +577,7 @@ async fn start_ldk() { chan_manager.broadcast_node_announcement( [0; 3], args.ldk_announced_node_name, - vec![args.ldk_announced_listen_addr.as_ref().unwrap().clone()], + args.ldk_announced_listen_addr.clone(), ); } });