Skip to content

Commit 1748a20

Browse files
committed
Rename NetGraphMsgHandler to NetworkGossip
NetGraphMsgHandler implements RoutingMessageHandler to handle gossip messages defined in BOLT 7 and maintains a view of the network by updating NetworkGraph. Rename it to NetworkGossip which better describes its purpose instead of somewhat related to what it implements.
1 parent 7af701f commit 1748a20

File tree

11 files changed

+341
-342
lines changed

11 files changed

+341
-342
lines changed

ARCH.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ receive `ChannelMonitorUpdate`s from `ChannelManager` and persist them to disk b
1111
channel steps forward.
1212

1313
There are two additional important structures that you may use either on the same device
14-
as the `ChannelManager` or on a separate one. `NetGraphMsgHandler` handles receiving channel
14+
as the `ChannelManager` or on a separate one. `NetworkGossip` handles receiving channel
1515
and node announcements, which are then used to calculate routes by `find_route` for sending
1616
payments. `PeerManager` handles the authenticated and encrypted communication protocol,
17-
monitoring for liveness of peers, routing messages to `ChannelManager` and `NetGraphMsgHandler`
17+
monitoring for liveness of peers, routing messages to `ChannelManager` and `NetworkGossip`
1818
instances directly, and receiving messages from them via the `EventsProvider` interface.
1919

2020
These structs communicate with each other using a public API, so that you can easily add
@@ -56,7 +56,7 @@ At a high level, some of the common interfaces fit together as follows:
5656
| ----------------- \ / ----------------
5757
| ^ \ / |
5858
(as RoutingMessageHandler) | v v
59-
\ ---------------------- --------- -----------------
60-
-----------------> | NetGraphMsgHandler | | Event | | chain::Filter |
61-
---------------------- --------- -----------------
59+
\ ----------------- --------- -----------------
60+
-----------------> | NetworkGossip | | Event | | chain::Filter |
61+
----------------- --------- -----------------
6262
```

fuzz/src/full_stack.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ use lightning::ln::channelmanager::{ChainParameters, ChannelManager};
3737
use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor,IgnoringMessageHandler};
3838
use lightning::ln::msgs::DecodeError;
3939
use lightning::ln::script::ShutdownScript;
40-
use lightning::routing::network_graph::{NetGraphMsgHandler, NetworkGraph};
40+
use lightning::routing::network_graph::{NetworkGossip, NetworkGraph};
4141
use lightning::routing::router::{find_route, Payee, RouteParameters};
4242
use lightning::routing::scorer::Scorer;
4343
use lightning::util::config::UserConfig;
@@ -161,7 +161,7 @@ type ChannelMan = ChannelManager<
161161
EnforcingSigner,
162162
Arc<chainmonitor::ChainMonitor<EnforcingSigner, Arc<dyn chain::Filter>, Arc<TestBroadcaster>, Arc<FuzzEstimator>, Arc<dyn Logger>, Arc<TestPersister>>>,
163163
Arc<TestBroadcaster>, Arc<KeyProvider>, Arc<FuzzEstimator>, Arc<dyn Logger>>;
164-
type PeerMan<'a> = PeerManager<Peer<'a>, Arc<ChannelMan>, Arc<NetGraphMsgHandler<Arc<NetworkGraph>, Arc<dyn chain::Access>, Arc<dyn Logger>>>, Arc<dyn Logger>, IgnoringMessageHandler>;
164+
type PeerMan<'a> = PeerManager<Peer<'a>, Arc<ChannelMan>, Arc<NetworkGossip<Arc<NetworkGraph>, Arc<dyn chain::Access>, Arc<dyn Logger>>>, Arc<dyn Logger>, IgnoringMessageHandler>;
165165

166166
struct MoneyLossDetector<'a> {
167167
manager: Arc<ChannelMan>,
@@ -381,13 +381,13 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
381381
let channelmanager = Arc::new(ChannelManager::new(fee_est.clone(), monitor.clone(), broadcast.clone(), Arc::clone(&logger), keys_manager.clone(), config, params));
382382
let our_id = PublicKey::from_secret_key(&Secp256k1::signing_only(), &keys_manager.get_node_secret());
383383
let network_graph = Arc::new(NetworkGraph::new(genesis_block(network).block_hash()));
384-
let net_graph_msg_handler = Arc::new(NetGraphMsgHandler::new(Arc::clone(&network_graph), None, Arc::clone(&logger)));
384+
let network_gossip = Arc::new(NetworkGossip::new(Arc::clone(&network_graph), None, Arc::clone(&logger)));
385385
let scorer = Scorer::with_fixed_penalty(0);
386386

387387
let peers = RefCell::new([false; 256]);
388388
let mut loss_detector = MoneyLossDetector::new(&peers, channelmanager.clone(), monitor.clone(), PeerManager::new(MessageHandler {
389389
chan_handler: channelmanager.clone(),
390-
route_handler: net_graph_msg_handler.clone(),
390+
route_handler: network_gossip.clone(),
391391
}, our_network_key, &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0], Arc::clone(&logger), IgnoringMessageHandler{}));
392392

393393
let mut should_forward = false;

lightning-background-processor/src/lib.rs

+19-19
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use lightning::chain::keysinterface::{Sign, KeysInterface};
1515
use lightning::ln::channelmanager::ChannelManager;
1616
use lightning::ln::msgs::{ChannelMessageHandler, RoutingMessageHandler};
1717
use lightning::ln::peer_handler::{CustomMessageHandler, PeerManager, SocketDescriptor};
18-
use lightning::routing::network_graph::{NetworkGraph, NetGraphMsgHandler};
18+
use lightning::routing::network_graph::{NetworkGraph, NetworkGossip};
1919
use lightning::util::events::{Event, EventHandler, EventsProvider};
2020
use lightning::util::logger::Logger;
2121
use std::sync::Arc;
@@ -103,26 +103,26 @@ ChannelManagerPersister<Signer, M, T, K, F, L> for Fun where
103103
/// Decorates an [`EventHandler`] with common functionality provided by standard [`EventHandler`]s.
104104
struct DecoratingEventHandler<
105105
E: EventHandler,
106-
N: Deref<Target = NetGraphMsgHandler<G, A, L>>,
106+
N: Deref<Target = NetworkGossip<G, A, L>>,
107107
G: Deref<Target = NetworkGraph>,
108108
A: Deref,
109109
L: Deref,
110110
>
111111
where A::Target: chain::Access, L::Target: Logger {
112112
event_handler: E,
113-
net_graph_msg_handler: Option<N>,
113+
network_gossip: Option<N>,
114114
}
115115

116116
impl<
117117
E: EventHandler,
118-
N: Deref<Target = NetGraphMsgHandler<G, A, L>>,
118+
N: Deref<Target = NetworkGossip<G, A, L>>,
119119
G: Deref<Target = NetworkGraph>,
120120
A: Deref,
121121
L: Deref,
122122
> EventHandler for DecoratingEventHandler<E, N, G, A, L>
123123
where A::Target: chain::Access, L::Target: Logger {
124124
fn handle_event(&self, event: &Event) {
125-
if let Some(event_handler) = &self.net_graph_msg_handler {
125+
if let Some(event_handler) = &self.network_gossip {
126126
event_handler.handle_event(event);
127127
}
128128
self.event_handler.handle_event(event);
@@ -153,7 +153,7 @@ impl BackgroundProcessor {
153153
/// `event_handler` is responsible for handling events that users should be notified of (e.g.,
154154
/// payment failed). [`BackgroundProcessor`] may decorate the given [`EventHandler`] with common
155155
/// functionality implemented by other handlers.
156-
/// * [`NetGraphMsgHandler`] if given will update the [`NetworkGraph`] based on payment failures.
156+
/// * [`NetworkGossip`] if given will update the [`NetworkGraph`] based on payment failures.
157157
///
158158
/// [top-level documentation]: BackgroundProcessor
159159
/// [`join`]: Self::join
@@ -180,12 +180,12 @@ impl BackgroundProcessor {
180180
CMP: 'static + Send + ChannelManagerPersister<Signer, CW, T, K, F, L>,
181181
M: 'static + Deref<Target = ChainMonitor<Signer, CF, T, F, L, P>> + Send + Sync,
182182
CM: 'static + Deref<Target = ChannelManager<Signer, CW, T, K, F, L>> + Send + Sync,
183-
NG: 'static + Deref<Target = NetGraphMsgHandler<G, CA, L>> + Send + Sync,
183+
NG: 'static + Deref<Target = NetworkGossip<G, CA, L>> + Send + Sync,
184184
UMH: 'static + Deref + Send + Sync,
185185
PM: 'static + Deref<Target = PeerManager<Descriptor, CMH, RMH, L, UMH>> + Send + Sync,
186186
>(
187187
persister: CMP, event_handler: EH, chain_monitor: M, channel_manager: CM,
188-
net_graph_msg_handler: Option<NG>, peer_manager: PM, logger: L
188+
network_gossip: Option<NG>, peer_manager: PM, logger: L
189189
) -> Self
190190
where
191191
CA::Target: 'static + chain::Access,
@@ -203,7 +203,7 @@ impl BackgroundProcessor {
203203
let stop_thread = Arc::new(AtomicBool::new(false));
204204
let stop_thread_clone = stop_thread.clone();
205205
let handle = thread::spawn(move || -> Result<(), std::io::Error> {
206-
let event_handler = DecoratingEventHandler { event_handler, net_graph_msg_handler };
206+
let event_handler = DecoratingEventHandler { event_handler, network_gossip };
207207

208208
log_trace!(logger, "Calling ChannelManager's timer_tick_occurred on startup");
209209
channel_manager.timer_tick_occurred();
@@ -312,7 +312,7 @@ mod tests {
312312
use lightning::ln::features::InitFeatures;
313313
use lightning::ln::msgs::{ChannelMessageHandler, Init};
314314
use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler};
315-
use lightning::routing::network_graph::{NetworkGraph, NetGraphMsgHandler};
315+
use lightning::routing::network_graph::{NetworkGraph, NetworkGossip};
316316
use lightning::util::config::UserConfig;
317317
use lightning::util::events::{Event, MessageSendEventsProvider, MessageSendEvent};
318318
use lightning::util::ser::Writeable;
@@ -342,7 +342,7 @@ mod tests {
342342

343343
struct Node {
344344
node: Arc<SimpleArcChannelManager<ChainMonitor, test_utils::TestBroadcaster, test_utils::TestFeeEstimator, test_utils::TestLogger>>,
345-
net_graph_msg_handler: Option<Arc<NetGraphMsgHandler<Arc<NetworkGraph>, Arc<test_utils::TestChainSource>, Arc<test_utils::TestLogger>>>>,
345+
network_gossip: Option<Arc<NetworkGossip<Arc<NetworkGraph>, Arc<test_utils::TestChainSource>, Arc<test_utils::TestLogger>>>>,
346346
peer_manager: Arc<PeerManager<TestDescriptor, Arc<test_utils::TestChannelMessageHandler>, Arc<test_utils::TestRoutingMessageHandler>, Arc<test_utils::TestLogger>, IgnoringMessageHandler>>,
347347
chain_monitor: Arc<ChainMonitor>,
348348
persister: Arc<FilesystemPersister>,
@@ -386,10 +386,10 @@ mod tests {
386386
let params = ChainParameters { network, best_block };
387387
let manager = Arc::new(ChannelManager::new(fee_estimator.clone(), chain_monitor.clone(), tx_broadcaster.clone(), logger.clone(), keys_manager.clone(), UserConfig::default(), params));
388388
let network_graph = Arc::new(NetworkGraph::new(genesis_block.header.block_hash()));
389-
let net_graph_msg_handler = Some(Arc::new(NetGraphMsgHandler::new(network_graph.clone(), Some(chain_source.clone()), logger.clone())));
389+
let network_gossip = Some(Arc::new(NetworkGossip::new(network_graph.clone(), Some(chain_source.clone()), logger.clone())));
390390
let msg_handler = MessageHandler { chan_handler: Arc::new(test_utils::TestChannelMessageHandler::new()), route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new() )};
391391
let peer_manager = Arc::new(PeerManager::new(msg_handler, keys_manager.get_node_secret(), &seed, logger.clone(), IgnoringMessageHandler{}));
392-
let node = Node { node: manager, net_graph_msg_handler, peer_manager, chain_monitor, persister, tx_broadcaster, network_graph, logger, best_block };
392+
let node = Node { node: manager, network_gossip, peer_manager, chain_monitor, persister, tx_broadcaster, network_graph, logger, best_block };
393393
nodes.push(node);
394394
}
395395

@@ -487,7 +487,7 @@ mod tests {
487487
let data_dir = nodes[0].persister.get_data_dir();
488488
let persister = move |node: &ChannelManager<InMemorySigner, Arc<ChainMonitor>, Arc<test_utils::TestBroadcaster>, Arc<KeysManager>, Arc<test_utils::TestFeeEstimator>, Arc<test_utils::TestLogger>>| FilesystemPersister::persist_manager(data_dir.clone(), node);
489489
let event_handler = |_: &_| {};
490-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
490+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
491491

492492
macro_rules! check_persisted_data {
493493
($node: expr, $filepath: expr, $expected_bytes: expr) => {
@@ -540,7 +540,7 @@ mod tests {
540540
let data_dir = nodes[0].persister.get_data_dir();
541541
let persister = move |node: &ChannelManager<InMemorySigner, Arc<ChainMonitor>, Arc<test_utils::TestBroadcaster>, Arc<KeysManager>, Arc<test_utils::TestFeeEstimator>, Arc<test_utils::TestLogger>>| FilesystemPersister::persist_manager(data_dir.clone(), node);
542542
let event_handler = |_: &_| {};
543-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
543+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
544544
loop {
545545
let log_entries = nodes[0].logger.lines.lock().unwrap();
546546
let desired_log = "Calling ChannelManager's timer_tick_occurred".to_string();
@@ -562,7 +562,7 @@ mod tests {
562562

563563
let persister = |_: &_| Err(std::io::Error::new(std::io::ErrorKind::Other, "test"));
564564
let event_handler = |_: &_| {};
565-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
565+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
566566
match bg_processor.join() {
567567
Ok(_) => panic!("Expected error persisting manager"),
568568
Err(e) => {
@@ -584,7 +584,7 @@ mod tests {
584584
let event_handler = move |event: &Event| {
585585
sender.send(handle_funding_generation_ready!(event, channel_value)).unwrap();
586586
};
587-
let bg_processor = BackgroundProcessor::start(persister.clone(), event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
587+
let bg_processor = BackgroundProcessor::start(persister.clone(), event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
588588

589589
// Open a channel and check that the FundingGenerationReady event was handled.
590590
begin_open_channel!(nodes[0], nodes[1], channel_value);
@@ -608,7 +608,7 @@ mod tests {
608608
// Set up a background event handler for SpendableOutputs events.
609609
let (sender, receiver) = std::sync::mpsc::sync_channel(1);
610610
let event_handler = move |event: &Event| sender.send(event.clone()).unwrap();
611-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
611+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
612612

613613
// Force close the channel and check that the SpendableOutputs event was handled.
614614
nodes[0].node.force_close_channel(&nodes[0].node.list_channels()[0].channel_id).unwrap();
@@ -637,7 +637,7 @@ mod tests {
637637
let scorer = Arc::new(Mutex::new(test_utils::TestScorer::default()));
638638
let invoice_payer = Arc::new(InvoicePayer::new(Arc::clone(&nodes[0].node), router, scorer, Arc::clone(&nodes[0].logger), |_: &_| {}, RetryAttempts(2)));
639639
let event_handler = Arc::clone(&invoice_payer);
640-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].net_graph_msg_handler.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
640+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].network_gossip.clone(), nodes[0].peer_manager.clone(), nodes[0].logger.clone());
641641
assert!(bg_processor.stop().is_ok());
642642
}
643643
}

lightning/src/ln/chanmon_update_fail_tests.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1898,9 +1898,9 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
18981898
(channel_id, create_chan_between_nodes_with_value_b(&nodes[1], &nodes[0], &funding_locked))
18991899
};
19001900
for node in nodes.iter() {
1901-
assert!(node.net_graph_msg_handler.handle_channel_announcement(&announcement).unwrap());
1902-
node.net_graph_msg_handler.handle_channel_update(&as_update).unwrap();
1903-
node.net_graph_msg_handler.handle_channel_update(&bs_update).unwrap();
1901+
assert!(node.network_gossip.handle_channel_announcement(&announcement).unwrap());
1902+
node.network_gossip.handle_channel_update(&as_update).unwrap();
1903+
node.network_gossip.handle_channel_update(&bs_update).unwrap();
19041904
}
19051905

19061906
send_payment(&nodes[0], &[&nodes[1]], 8000000);

0 commit comments

Comments
 (0)