@@ -6,11 +6,14 @@ mod convert;
6
6
mod disk;
7
7
mod hex_utils;
8
8
pub mod node_api;
9
+ mod onion;
9
10
mod peer_utils;
10
11
mod sweep;
11
12
12
13
use crate :: bitcoind_client:: BitcoindClient ;
13
14
use crate :: disk:: FilesystemLogger ;
15
+ use crate :: node_api:: P2PGossipSyncType ;
16
+ use crate :: onion:: OnionMessageHandler ;
14
17
use bitcoin:: blockdata:: transaction:: Transaction ;
15
18
use bitcoin:: consensus:: encode;
16
19
use bitcoin:: network:: constants:: Network ;
@@ -26,9 +29,9 @@ use lightning::ln::channelmanager::{
26
29
ChainParameters , ChannelManagerReadArgs , SimpleArcChannelManager ,
27
30
} ;
28
31
use lightning:: ln:: msgs:: DecodeError ;
29
- use lightning:: ln:: peer_handler:: { IgnoringMessageHandler , MessageHandler , SimpleArcPeerManager } ;
32
+ use lightning:: ln:: peer_handler:: { IgnoringMessageHandler , MessageHandler , PeerManager } ;
30
33
use lightning:: ln:: { PaymentHash , PaymentPreimage , PaymentSecret } ;
31
- use lightning:: onion_message:: { DefaultMessageRouter , SimpleArcOnionMessenger } ;
34
+ use lightning:: onion_message:: { DefaultMessageRouter , OnionMessenger } ;
32
35
use lightning:: routing:: gossip;
33
36
use lightning:: routing:: gossip:: { NodeId , P2PGossipSync } ;
34
37
use lightning:: routing:: router:: DefaultRouter ;
@@ -47,7 +50,7 @@ use lightning_net_tokio::SocketDescriptor;
47
50
use lightning_persister:: FilesystemPersister ;
48
51
use rand:: { thread_rng, Rng } ;
49
52
use std:: collections:: hash_map:: Entry ;
50
- use std:: collections:: HashMap ;
53
+ use std:: collections:: { HashMap , VecDeque } ;
51
54
use std:: convert:: TryInto ;
52
55
use std:: fmt;
53
56
use std:: fs;
@@ -129,21 +132,29 @@ type ChainMonitor = chainmonitor::ChainMonitor<
129
132
Arc < FilesystemPersister > ,
130
133
> ;
131
134
132
- pub ( crate ) type PeerManager = SimpleArcPeerManager <
135
+ pub ( crate ) type PeerManagerType = PeerManager <
133
136
SocketDescriptor ,
134
- ChainMonitor ,
135
- BitcoindClient ,
136
- BitcoindClient ,
137
- BitcoindClient ,
138
- FilesystemLogger ,
137
+ Arc < ChannelManager > ,
138
+ Arc < P2PGossipSyncType > ,
139
+ Arc < OnionMessengerType > ,
140
+ Arc < FilesystemLogger > ,
141
+ IgnoringMessageHandler ,
142
+ Arc < KeysManager > ,
139
143
> ;
140
144
141
145
pub ( crate ) type ChannelManager =
142
146
SimpleArcChannelManager < ChainMonitor , BitcoindClient , BitcoindClient , FilesystemLogger > ;
143
147
144
148
pub ( crate ) type NetworkGraph = gossip:: NetworkGraph < Arc < FilesystemLogger > > ;
145
149
146
- type OnionMessenger = SimpleArcOnionMessenger < FilesystemLogger > ;
150
+ pub ( crate ) type OnionMessengerType = OnionMessenger <
151
+ Arc < KeysManager > ,
152
+ Arc < KeysManager > ,
153
+ Arc < FilesystemLogger > ,
154
+ Arc < DefaultMessageRouter > ,
155
+ IgnoringMessageHandler ,
156
+ Arc < OnionMessageHandler > ,
157
+ > ;
147
158
148
159
pub ( crate ) type BumpTxEventHandler = BumpTransactionEventHandler <
149
160
Arc < BitcoindClient > ,
@@ -471,9 +482,10 @@ async fn handle_ldk_events(
471
482
}
472
483
473
484
pub async fn start_ldk ( args : config:: LdkUserInfo , test_name : & str ) -> node_api:: Node {
474
- let ( ldk_data_dir, ldk_data_dir_binding, ldk_log_dir) = config:: setup_data_and_log_dirs ( args. ldk_data_dir , test_name) ;
475
- let ldk_addr = args. ldk_announced_listen_addr . clone ( ) ;
476
- let ldk_announced_node_name = args. ldk_announced_node_name . clone ( ) ;
485
+ let ( ldk_data_dir, ldk_data_dir_binding, ldk_log_dir) =
486
+ config:: setup_data_and_log_dirs ( args. ldk_data_dir , test_name) ;
487
+ let ldk_addr = args. ldk_announced_listen_addr . clone ( ) ;
488
+ let ldk_announced_node_name = args. ldk_announced_node_name . clone ( ) ;
477
489
478
490
// ## Setup
479
491
// Step 1: Initialize the Logger
@@ -492,7 +504,7 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
492
504
{
493
505
Ok ( client) => Arc :: new ( client) ,
494
506
Err ( e) => {
495
- panic ! ( "Failed to connect to bitcoind client: {}" , e) ;
507
+ panic ! ( "Failed to connect to bitcoind client: {}" , e) ;
496
508
}
497
509
} ;
498
510
@@ -505,10 +517,10 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
505
517
bitcoin:: Network :: Regtest => "regtest" ,
506
518
bitcoin:: Network :: Signet => "signet" ,
507
519
} {
508
- panic ! (
509
- "Chain argument ({}) didn't match bitcoind chain ({})" ,
510
- args. network, bitcoind_chain
511
- ) ;
520
+ panic ! (
521
+ "Chain argument ({}) didn't match bitcoind chain ({})" ,
522
+ args. network, bitcoind_chain
523
+ ) ;
512
524
}
513
525
514
526
// Step 2: Initialize the FeeEstimator
@@ -553,10 +565,7 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
553
565
f. sync_all ( ) . expect ( "Failed to sync node keys seed to disk" ) ;
554
566
}
555
567
Err ( e) => {
556
- panic ! (
557
- "ERROR: Unable to create keys seed file {}: {}" ,
558
- keys_seed_path, e
559
- ) ;
568
+ panic ! ( "ERROR: Unable to create keys seed file {}: {}" , keys_seed_path, e) ;
560
569
}
561
570
}
562
571
key
@@ -707,14 +716,16 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
707
716
) ) ;
708
717
709
718
// Step 15: Initialize the PeerManager
719
+ let onion_message_handler =
720
+ Arc :: new ( OnionMessageHandler { messages : Arc :: new ( Mutex :: new ( VecDeque :: new ( ) ) ) } ) ;
710
721
let channel_manager: Arc < ChannelManager > = Arc :: new ( channel_manager) ;
711
- let onion_messenger: Arc < OnionMessenger > = Arc :: new ( OnionMessenger :: new (
722
+ let onion_messenger: Arc < OnionMessengerType > = Arc :: new ( OnionMessenger :: new (
712
723
Arc :: clone ( & keys_manager) ,
713
724
Arc :: clone ( & keys_manager) ,
714
725
Arc :: clone ( & logger) ,
715
726
Arc :: new ( DefaultMessageRouter { } ) ,
716
727
IgnoringMessageHandler { } ,
717
- IgnoringMessageHandler { } ,
728
+ Arc :: clone ( & onion_message_handler ) ,
718
729
) ) ;
719
730
let mut ephemeral_bytes = [ 0 ; 32 ] ;
720
731
let current_time = SystemTime :: now ( ) . duration_since ( SystemTime :: UNIX_EPOCH ) . unwrap ( ) . as_secs ( ) ;
@@ -725,7 +736,7 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
725
736
onion_message_handler : onion_messenger. clone ( ) ,
726
737
custom_message_handler : IgnoringMessageHandler { } ,
727
738
} ;
728
- let peer_manager: Arc < PeerManager > = Arc :: new ( PeerManager :: new (
739
+ let peer_manager: Arc < PeerManagerType > = Arc :: new ( PeerManager :: new (
729
740
lightning_msg_handler,
730
741
current_time. try_into ( ) . unwrap ( ) ,
731
742
& ephemeral_bytes,
@@ -878,7 +889,7 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
878
889
interval. tick ( ) . await ;
879
890
match disk:: read_channel_peer_data ( Path :: new ( & peer_data_path) ) {
880
891
Ok ( info) => {
881
- let peers = connect_pm. get_peer_node_ids ( ) ;
892
+ let peers = & connect_pm. get_peer_node_ids ( ) ;
882
893
for node_id in connect_cm
883
894
. list_channels ( )
884
895
. iter ( )
@@ -939,23 +950,24 @@ pub async fn start_ldk(args: config::LdkUserInfo, test_name: &str) -> node_api::
939
950
Arc :: clone ( & channel_manager) ,
940
951
) ) ;
941
952
942
- return node_api:: Node {
943
- logger,
944
- bitcoind_client,
945
- persister,
946
- chain_monitor,
947
- keys_manager,
948
- network_graph,
949
- router,
950
- scorer,
951
- channel_manager,
952
- gossip_sync,
953
- onion_messenger,
954
- peer_manager,
955
- bp_exit,
956
- background_processor,
957
- stop_listen_connect,
958
- listening_port : args. ldk_peer_listening_port . clone ( ) ,
959
- ldk_data_dir : ldk_data_dir_binding,
960
- } ;
953
+ return node_api:: Node {
954
+ logger,
955
+ bitcoind_client,
956
+ persister,
957
+ chain_monitor,
958
+ keys_manager,
959
+ network_graph,
960
+ router,
961
+ scorer,
962
+ channel_manager,
963
+ gossip_sync,
964
+ onion_messenger,
965
+ onion_message_handler,
966
+ peer_manager,
967
+ bp_exit,
968
+ background_processor,
969
+ stop_listen_connect,
970
+ listening_port : args. ldk_peer_listening_port . clone ( ) ,
971
+ ldk_data_dir : ldk_data_dir_binding,
972
+ } ;
961
973
}
0 commit comments