@@ -263,9 +263,27 @@ impl Builder {
263
263
Arc :: clone ( & wallet) ,
264
264
) ) ;
265
265
266
+ // Step 12: Initialize the network graph, scorer, and router
267
+ let network_graph = Arc :: new (
268
+ io_utils:: read_network_graph ( Arc :: clone ( & config) , Arc :: clone ( & logger) )
269
+ . expect ( "Failed to read the network graph" ) ,
270
+ ) ;
271
+ let scorer = Arc :: new ( Mutex :: new ( io_utils:: read_scorer (
272
+ Arc :: clone ( & config) ,
273
+ Arc :: clone ( & network_graph) ,
274
+ Arc :: clone ( & logger) ,
275
+ ) ) ) ;
276
+
277
+ let router = Arc :: new ( DefaultRouter :: new (
278
+ Arc :: clone ( & network_graph) ,
279
+ Arc :: clone ( & logger) ,
280
+ keys_manager. get_secure_random_bytes ( ) ,
281
+ Arc :: clone ( & scorer) ,
282
+ ) ) ;
283
+
266
284
// Step 6: Read ChannelMonitor state from disk
267
285
let mut channel_monitors = persister
268
- . read_channelmonitors ( keys_manager. clone ( ) )
286
+ . read_channelmonitors ( Arc :: clone ( & keys_manager) , Arc :: clone ( & keys_manager ) )
269
287
. expect ( "Failed to read channel monitors from disk" ) ;
270
288
271
289
// Step 7: Initialize the ChannelManager
@@ -278,10 +296,13 @@ impl Builder {
278
296
channel_monitor_mut_references. push ( channel_monitor) ;
279
297
}
280
298
let read_args = ChannelManagerReadArgs :: new (
299
+ Arc :: clone ( & keys_manager) ,
300
+ Arc :: clone ( & keys_manager) ,
281
301
Arc :: clone ( & keys_manager) ,
282
302
Arc :: clone ( & wallet) ,
283
303
Arc :: clone ( & chain_monitor) ,
284
304
Arc :: clone ( & wallet) ,
305
+ Arc :: clone ( & router) ,
285
306
Arc :: clone ( & logger) ,
286
307
user_config,
287
308
channel_monitor_mut_references,
@@ -304,8 +325,11 @@ impl Builder {
304
325
Arc :: clone ( & wallet) ,
305
326
Arc :: clone ( & chain_monitor) ,
306
327
Arc :: clone ( & wallet) ,
328
+ Arc :: clone ( & router) ,
307
329
Arc :: clone ( & logger) ,
308
330
Arc :: clone ( & keys_manager) ,
331
+ Arc :: clone ( & keys_manager) ,
332
+ Arc :: clone ( & keys_manager) ,
309
333
user_config,
310
334
chain_params,
311
335
) ;
@@ -322,10 +346,6 @@ impl Builder {
322
346
}
323
347
324
348
// Step 10: Initialize the P2PGossipSync
325
- let network_graph = Arc :: new (
326
- io_utils:: read_network_graph ( Arc :: clone ( & config) , Arc :: clone ( & logger) )
327
- . expect ( "Failed to read the network graph" ) ,
328
- ) ;
329
349
let gossip_sync = Arc :: new ( P2PGossipSync :: new (
330
350
Arc :: clone ( & network_graph) ,
331
351
None :: < Arc < dyn Access + Send + Sync > > ,
@@ -334,6 +354,7 @@ impl Builder {
334
354
335
355
//// Step 11: Initialize the PeerManager
336
356
let onion_messenger: Arc < OnionMessenger > = Arc :: new ( OnionMessenger :: new (
357
+ Arc :: clone ( & keys_manager) ,
337
358
Arc :: clone ( & keys_manager) ,
338
359
Arc :: clone ( & logger) ,
339
360
IgnoringMessageHandler { } ,
@@ -357,13 +378,6 @@ impl Builder {
357
378
IgnoringMessageHandler { } ,
358
379
) ) ;
359
380
360
- // Step 12: Initialize routing ProbabilisticScorer
361
- let scorer = Arc :: new ( Mutex :: new ( io_utils:: read_scorer (
362
- Arc :: clone ( & config) ,
363
- Arc :: clone ( & network_graph) ,
364
- Arc :: clone ( & logger) ,
365
- ) ) ) ;
366
-
367
381
// Step 13: Init payment info storage
368
382
// TODO: persist payment info to disk
369
383
let inbound_payments = Arc :: new ( Mutex :: new ( HashMap :: new ( ) ) ) ;
@@ -410,6 +424,7 @@ impl Builder {
410
424
gossip_sync,
411
425
persister,
412
426
logger,
427
+ router,
413
428
scorer,
414
429
inbound_payments,
415
430
outbound_payments,
@@ -447,6 +462,7 @@ pub struct Node {
447
462
persister : Arc < FilesystemPersister > ,
448
463
logger : Arc < FilesystemLogger > ,
449
464
scorer : Arc < Mutex < Scorer > > ,
465
+ router : Arc < Router > ,
450
466
inbound_payments : Arc < PaymentInfoStorage > ,
451
467
outbound_payments : Arc < PaymentInfoStorage > ,
452
468
peer_store : Arc < PeerInfoStorage < FilesystemPersister > > ,
@@ -512,16 +528,9 @@ impl Node {
512
528
Arc :: clone ( & self . config ) ,
513
529
) ) ;
514
530
515
- let router = DefaultRouter :: new (
516
- Arc :: clone ( & self . network_graph ) ,
517
- Arc :: clone ( & self . logger ) ,
518
- self . keys_manager . get_secure_random_bytes ( ) ,
519
- Arc :: clone ( & self . scorer ) ,
520
- ) ;
521
-
522
531
let invoice_payer = Arc :: new ( InvoicePayer :: new (
523
532
Arc :: clone ( & self . channel_manager ) ,
524
- router,
533
+ Arc :: clone ( & self . router ) ,
525
534
Arc :: clone ( & self . logger ) ,
526
535
Arc :: clone ( & event_handler) ,
527
536
payment:: Retry :: Timeout ( LDK_PAYMENT_RETRY_TIMEOUT ) ,
@@ -1081,13 +1090,17 @@ pub(crate) type ChannelManager = lightning::ln::channelmanager::ChannelManager<
1081
1090
Arc < ChainMonitor > ,
1082
1091
Arc < Wallet < bdk:: sled:: Tree > > ,
1083
1092
Arc < WalletKeysManager < bdk:: sled:: Tree > > ,
1093
+ Arc < WalletKeysManager < bdk:: sled:: Tree > > ,
1094
+ Arc < WalletKeysManager < bdk:: sled:: Tree > > ,
1084
1095
Arc < Wallet < bdk:: sled:: Tree > > ,
1096
+ Arc < Router > ,
1085
1097
Arc < FilesystemLogger > ,
1086
1098
> ;
1087
1099
1088
1100
pub ( crate ) type KeysManager = WalletKeysManager < bdk:: sled:: Tree > ;
1089
1101
1090
- type InvoicePayer < F > = payment:: InvoicePayer < Arc < ChannelManager > , Router , Arc < FilesystemLogger > , F > ;
1102
+ type InvoicePayer < F > =
1103
+ payment:: InvoicePayer < Arc < ChannelManager > , Arc < Router > , Arc < FilesystemLogger > , F > ;
1091
1104
1092
1105
type Router = DefaultRouter < Arc < NetworkGraph > , Arc < FilesystemLogger > , Arc < Mutex < Scorer > > > ;
1093
1106
type Scorer = ProbabilisticScorer < Arc < NetworkGraph > , Arc < FilesystemLogger > > ;
@@ -1100,6 +1113,7 @@ pub(crate) type NetworkGraph = gossip::NetworkGraph<Arc<FilesystemLogger>>;
1100
1113
pub ( crate ) type PaymentInfoStorage = Mutex < HashMap < PaymentHash , PaymentInfo > > ;
1101
1114
1102
1115
pub ( crate ) type OnionMessenger = lightning:: onion_message:: OnionMessenger <
1116
+ Arc < WalletKeysManager < bdk:: sled:: Tree > > ,
1103
1117
Arc < WalletKeysManager < bdk:: sled:: Tree > > ,
1104
1118
Arc < FilesystemLogger > ,
1105
1119
IgnoringMessageHandler ,
0 commit comments