Skip to content

Commit 0f5bcd1

Browse files
committed
WIP: Parameterize NetworkGraph with Logger
1 parent 0f73d6a commit 0f5bcd1

File tree

8 files changed

+136
-125
lines changed

8 files changed

+136
-125
lines changed

lightning-invoice/src/utils.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -440,13 +440,13 @@ fn filter_channels(channels: Vec<ChannelDetails>, min_inbound_capacity_msat: Opt
440440
}
441441

442442
/// A [`Router`] implemented using [`find_route`].
443-
pub struct DefaultRouter<G: Deref<Target = NetworkGraph>, L: Deref> where L::Target: Logger {
443+
pub struct DefaultRouter<G: Deref<Target = NetworkGraph<L>>, L: Deref> where L::Target: Logger {
444444
network_graph: G,
445445
logger: L,
446446
random_seed_bytes: Mutex<[u8; 32]>,
447447
}
448448

449-
impl<G: Deref<Target = NetworkGraph>, L: Deref> DefaultRouter<G, L> where L::Target: Logger {
449+
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> DefaultRouter<G, L> where L::Target: Logger {
450450
/// Creates a new router using the given [`NetworkGraph`], a [`Logger`], and a randomness source
451451
/// `random_seed_bytes`.
452452
pub fn new(network_graph: G, logger: L, random_seed_bytes: [u8; 32]) -> Self {
@@ -455,7 +455,7 @@ impl<G: Deref<Target = NetworkGraph>, L: Deref> DefaultRouter<G, L> where L::Tar
455455
}
456456
}
457457

458-
impl<G: Deref<Target = NetworkGraph>, L: Deref, S: Score> Router<S> for DefaultRouter<G, L>
458+
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref, S: Score> Router<S> for DefaultRouter<G, L>
459459
where L::Target: Logger {
460460
fn find_route(
461461
&self, payer: &PublicKey, params: &RouteParameters, _payment_hash: &PaymentHash,
@@ -566,7 +566,7 @@ mod test {
566566
final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32,
567567
};
568568
let first_hops = nodes[0].node.list_usable_channels();
569-
let network_graph = node_cfgs[0].network_graph;
569+
let network_graph = &node_cfgs[0].network_graph;
570570
let logger = test_utils::TestLogger::new();
571571
let scorer = test_utils::TestScorer::with_penalty(0);
572572
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
@@ -842,7 +842,7 @@ mod test {
842842
final_cltv_expiry_delta: invoice.min_final_cltv_expiry() as u32,
843843
};
844844
let first_hops = nodes[0].node.list_usable_channels();
845-
let network_graph = node_cfgs[0].network_graph;
845+
let network_graph = &node_cfgs[0].network_graph;
846846
let logger = test_utils::TestLogger::new();
847847
let scorer = test_utils::TestScorer::with_penalty(0);
848848
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();

lightning/src/ln/functional_test_utils.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use util::test_utils::{panicking, TestChainMonitor};
2727
use util::events::{Event, MessageSendEvent, MessageSendEventsProvider, PaymentPurpose};
2828
use util::errors::APIError;
2929
use util::config::UserConfig;
30-
use util::ser::{ReadableArgs, Writeable, Readable};
30+
use util::ser::{ReadableArgs, Writeable};
3131

3232
use bitcoin::blockdata::block::{Block, BlockHeader};
3333
use bitcoin::blockdata::constants::genesis_block;
@@ -257,7 +257,6 @@ pub struct TestChanMonCfg {
257257
pub persister: test_utils::TestPersister,
258258
pub logger: test_utils::TestLogger,
259259
pub keys_manager: test_utils::TestKeysInterface,
260-
pub network_graph: NetworkGraph,
261260
}
262261

263262
pub struct NodeCfg<'a> {
@@ -267,7 +266,7 @@ pub struct NodeCfg<'a> {
267266
pub chain_monitor: test_utils::TestChainMonitor<'a>,
268267
pub keys_manager: &'a test_utils::TestKeysInterface,
269268
pub logger: &'a test_utils::TestLogger,
270-
pub network_graph: &'a NetworkGraph,
269+
pub network_graph: NetworkGraph<&'a test_utils::TestLogger>,
271270
pub node_seed: [u8; 32],
272271
pub features: InitFeatures,
273272
}
@@ -278,8 +277,8 @@ pub struct Node<'a, 'b: 'a, 'c: 'b> {
278277
pub chain_monitor: &'b test_utils::TestChainMonitor<'c>,
279278
pub keys_manager: &'b test_utils::TestKeysInterface,
280279
pub node: &'a ChannelManager<EnforcingSigner, &'b TestChainMonitor<'c>, &'c test_utils::TestBroadcaster, &'b test_utils::TestKeysInterface, &'c test_utils::TestFeeEstimator, &'c test_utils::TestLogger>,
281-
pub network_graph: &'c NetworkGraph,
282-
pub gossip_sync: P2PGossipSync<&'c NetworkGraph, &'c test_utils::TestChainSource, &'c test_utils::TestLogger>,
280+
pub network_graph: &'b NetworkGraph<&'c test_utils::TestLogger>,
281+
pub gossip_sync: P2PGossipSync<&'b NetworkGraph<&'c test_utils::TestLogger>, &'c test_utils::TestChainSource, &'c test_utils::TestLogger>,
283282
pub node_seed: [u8; 32],
284283
pub network_payment_count: Rc<RefCell<u8>>,
285284
pub network_chan_count: Rc<RefCell<u32>>,
@@ -311,7 +310,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
311310
{
312311
let mut w = test_utils::TestVecWriter(Vec::new());
313312
self.network_graph.write(&mut w).unwrap();
314-
let network_graph_deser = <NetworkGraph>::read(&mut io::Cursor::new(&w.0)).unwrap();
313+
let network_graph_deser = <NetworkGraph<_>>::read(&mut io::Cursor::new(&w.0), self.logger).unwrap();
315314
assert!(network_graph_deser == *self.network_graph);
316315
let gossip_sync = P2PGossipSync::new(
317316
&network_graph_deser, Some(self.chain_source), self.logger
@@ -1923,9 +1922,8 @@ pub fn create_chanmon_cfgs(node_count: usize) -> Vec<TestChanMonCfg> {
19231922
let persister = test_utils::TestPersister::new();
19241923
let seed = [i as u8; 32];
19251924
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
1926-
let network_graph = NetworkGraph::new(chain_source.genesis_hash);
19271925

1928-
chan_mon_cfgs.push(TestChanMonCfg{ tx_broadcaster, fee_estimator, chain_source, logger, persister, keys_manager, network_graph });
1926+
chan_mon_cfgs.push(TestChanMonCfg{ tx_broadcaster, fee_estimator, chain_source, logger, persister, keys_manager });
19291927
}
19301928

19311929
chan_mon_cfgs
@@ -1946,7 +1944,7 @@ pub fn create_node_cfgs<'a>(node_count: usize, chanmon_cfgs: &'a Vec<TestChanMon
19461944
keys_manager: &chanmon_cfgs[i].keys_manager,
19471945
node_seed: seed,
19481946
features: InitFeatures::known(),
1949-
network_graph: &chanmon_cfgs[i].network_graph,
1947+
network_graph: NetworkGraph::new(chanmon_cfgs[i].chain_source.genesis_hash, &chanmon_cfgs[i].logger),
19501948
});
19511949
}
19521950

@@ -1992,7 +1990,7 @@ pub fn create_network<'a, 'b: 'a, 'c: 'b>(node_count: usize, cfgs: &'b Vec<NodeC
19921990
let connect_style = Rc::new(RefCell::new(ConnectStyle::random_style()));
19931991

19941992
for i in 0..node_count {
1995-
let gossip_sync = P2PGossipSync::new(cfgs[i].network_graph, None, cfgs[i].logger);
1993+
let gossip_sync = P2PGossipSync::new(&cfgs[i].network_graph, None, cfgs[i].logger);
19961994
nodes.push(Node{
19971995
chain_source: cfgs[i].chain_source, tx_broadcaster: cfgs[i].tx_broadcaster,
19981996
chain_monitor: &cfgs[i].chain_monitor, keys_manager: &cfgs[i].keys_manager,

lightning/src/ln/functional_tests.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ use ln::channelmanager::{ChannelManager, ChannelManagerReadArgs, PaymentId, RAAC
2323
use ln::channel::{Channel, ChannelError};
2424
use ln::{chan_utils, onion_utils};
2525
use ln::chan_utils::{htlc_success_tx_weight, htlc_timeout_tx_weight, HTLCOutputInCommitment};
26+
use routing::gossip::NetworkGraph;
2627
use routing::router::{PaymentParameters, Route, RouteHop, RouteParameters, find_route, get_route};
2728
use ln::features::{ChannelFeatures, InitFeatures, InvoiceFeatures, NodeFeatures};
2829
use ln::msgs;
@@ -5802,7 +5803,8 @@ fn test_key_derivation_params() {
58025803
let seed = [42; 32];
58035804
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
58045805
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[0].chain_source), &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator, &chanmon_cfgs[0].persister, &keys_manager);
5805-
let node = NodeCfg { chain_source: &chanmon_cfgs[0].chain_source, logger: &chanmon_cfgs[0].logger, tx_broadcaster: &chanmon_cfgs[0].tx_broadcaster, fee_estimator: &chanmon_cfgs[0].fee_estimator, chain_monitor, keys_manager: &keys_manager, network_graph: &chanmon_cfgs[0].network_graph, node_seed: seed, features: InitFeatures::known() };
5806+
let network_graph = NetworkGraph::new(chanmon_cfgs[0].chain_source.genesis_hash, &chanmon_cfgs[0].logger);
5807+
let node = NodeCfg { chain_source: &chanmon_cfgs[0].chain_source, logger: &chanmon_cfgs[0].logger, tx_broadcaster: &chanmon_cfgs[0].tx_broadcaster, fee_estimator: &chanmon_cfgs[0].fee_estimator, chain_monitor, keys_manager: &keys_manager, network_graph, node_seed: seed, features: InitFeatures::known() };
58065808
let mut node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
58075809
node_cfgs.remove(0);
58085810
node_cfgs.insert(0, node);

lightning/src/ln/peer_handler.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ impl Peer {
387387
/// issues such as overly long function definitions.
388388
///
389389
/// (C-not exported) as Arcs don't make sense in bindings
390-
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<P2PGossipSync<Arc<NetworkGraph>, Arc<C>, Arc<L>>>, Arc<L>, Arc<IgnoringMessageHandler>>;
390+
pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArcChannelManager<M, T, F, L>>, Arc<P2PGossipSync<Arc<NetworkGraph<L>>, Arc<C>, Arc<L>>>, Arc<L>, Arc<IgnoringMessageHandler>>;
391391

392392
/// SimpleRefPeerManager is a type alias for a PeerManager reference, and is the reference
393393
/// counterpart to the SimpleArcPeerManager type alias. Use this type by default when you don't
@@ -397,7 +397,7 @@ pub type SimpleArcPeerManager<SD, M, T, F, C, L> = PeerManager<SD, Arc<SimpleArc
397397
/// helps with issues such as long function definitions.
398398
///
399399
/// (C-not exported) as Arcs don't make sense in bindings
400-
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, SD, M, T, F, C, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L>, &'e P2PGossipSync<&'g NetworkGraph, &'h C, &'f L>, &'f L, IgnoringMessageHandler>;
400+
pub type SimpleRefPeerManager<'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, SD, M, T, F, C, L> = PeerManager<SD, SimpleRefChannelManager<'a, 'b, 'c, 'd, 'e, M, T, F, L>, &'e P2PGossipSync<&'g NetworkGraph<&'f L>, &'h C, &'f L>, &'f L, IgnoringMessageHandler>;
401401

402402
/// A PeerManager manages a set of peers, described by their [`SocketDescriptor`] and marshalls
403403
/// socket events into messages which it passes on to its [`MessageHandler`].

0 commit comments

Comments
 (0)