32
32
//! type TxBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface + Send + Sync;
33
33
//! type FeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator + Send + Sync;
34
34
//! type Logger = dyn lightning::util::logger::Logger + Send + Sync;
35
+ //! type NodeSigner = dyn lightning::chain::keysinterface::NodeSigner + Send + Sync;
35
36
//! type ChainAccess = dyn lightning::chain::Access + Send + Sync;
36
37
//! type ChainFilter = dyn lightning::chain::Filter + Send + Sync;
37
38
//! type DataPersister = dyn lightning::chain::chainmonitor::Persist<lightning::chain::keysinterface::InMemorySigner> + Send + Sync;
@@ -80,6 +81,7 @@ use tokio::{io, time};
80
81
use tokio:: sync:: mpsc;
81
82
use tokio:: io:: { AsyncReadExt , AsyncWrite , AsyncWriteExt } ;
82
83
84
+ use lightning:: chain:: keysinterface:: NodeSigner ;
83
85
use lightning:: ln:: peer_handler;
84
86
use lightning:: ln:: peer_handler:: SocketDescriptor as LnSocketTrait ;
85
87
use lightning:: ln:: peer_handler:: CustomMessageHandler ;
@@ -123,21 +125,23 @@ struct Connection {
123
125
id : u64 ,
124
126
}
125
127
impl Connection {
126
- async fn poll_event_process < PM , CMH , RMH , OMH , L , UMH > (
128
+ async fn poll_event_process < PM , CMH , RMH , OMH , L , UMH , NS > (
127
129
peer_manager : PM ,
128
130
mut event_receiver : mpsc:: Receiver < ( ) > ,
129
131
) where
130
- PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH > > + ' static + Send + Sync ,
132
+ PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH , NS > > + ' static + Send + Sync ,
131
133
CMH : Deref + ' static + Send + Sync ,
132
134
RMH : Deref + ' static + Send + Sync ,
133
135
OMH : Deref + ' static + Send + Sync ,
134
136
L : Deref + ' static + Send + Sync ,
135
137
UMH : Deref + ' static + Send + Sync ,
138
+ NS : Deref + ' static + Send + Sync ,
136
139
CMH :: Target : ChannelMessageHandler + Send + Sync ,
137
140
RMH :: Target : RoutingMessageHandler + Send + Sync ,
138
141
OMH :: Target : OnionMessageHandler + Send + Sync ,
139
142
L :: Target : Logger + Send + Sync ,
140
143
UMH :: Target : CustomMessageHandler + Send + Sync ,
144
+ NS :: Target : NodeSigner + Send + Sync ,
141
145
{
142
146
loop {
143
147
if event_receiver. recv ( ) . await . is_none ( ) {
@@ -147,24 +151,26 @@ impl Connection {
147
151
}
148
152
}
149
153
150
- async fn schedule_read < PM , CMH , RMH , OMH , L , UMH > (
154
+ async fn schedule_read < PM , CMH , RMH , OMH , L , UMH , NS > (
151
155
peer_manager : PM ,
152
156
us : Arc < Mutex < Self > > ,
153
157
mut reader : io:: ReadHalf < TcpStream > ,
154
158
mut read_wake_receiver : mpsc:: Receiver < ( ) > ,
155
159
mut write_avail_receiver : mpsc:: Receiver < ( ) > ,
156
160
) where
157
- PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH > > + ' static + Send + Sync + Clone ,
161
+ PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH , NS > > + ' static + Send + Sync + Clone ,
158
162
CMH : Deref + ' static + Send + Sync ,
159
163
RMH : Deref + ' static + Send + Sync ,
160
164
OMH : Deref + ' static + Send + Sync ,
161
165
L : Deref + ' static + Send + Sync ,
162
166
UMH : Deref + ' static + Send + Sync ,
167
+ NS : Deref + ' static + Send + Sync ,
163
168
CMH :: Target : ChannelMessageHandler + ' static + Send + Sync ,
164
169
RMH :: Target : RoutingMessageHandler + ' static + Send + Sync ,
165
170
OMH :: Target : OnionMessageHandler + ' static + Send + Sync ,
166
171
L :: Target : Logger + ' static + Send + Sync ,
167
172
UMH :: Target : CustomMessageHandler + ' static + Send + Sync ,
173
+ NS :: Target : NodeSigner + ' static + Send + Sync ,
168
174
{
169
175
// Create a waker to wake up poll_event_process, above
170
176
let ( event_waker, event_receiver) = mpsc:: channel ( 1 ) ;
@@ -283,21 +289,23 @@ fn get_addr_from_stream(stream: &StdTcpStream) -> Option<NetAddress> {
283
289
/// The returned future will complete when the peer is disconnected and associated handling
284
290
/// futures are freed, though, because all processing futures are spawned with tokio::spawn, you do
285
291
/// not need to poll the provided future in order to make progress.
286
- pub fn setup_inbound < PM , CMH , RMH , OMH , L , UMH > (
292
+ pub fn setup_inbound < PM , CMH , RMH , OMH , L , UMH , NS > (
287
293
peer_manager : PM ,
288
294
stream : StdTcpStream ,
289
295
) -> impl std:: future:: Future < Output =( ) > where
290
- PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH > > + ' static + Send + Sync + Clone ,
296
+ PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH , NS > > + ' static + Send + Sync + Clone ,
291
297
CMH : Deref + ' static + Send + Sync ,
292
298
RMH : Deref + ' static + Send + Sync ,
293
299
OMH : Deref + ' static + Send + Sync ,
294
300
L : Deref + ' static + Send + Sync ,
295
301
UMH : Deref + ' static + Send + Sync ,
302
+ NS : Deref + ' static + Send + Sync ,
296
303
CMH :: Target : ChannelMessageHandler + Send + Sync ,
297
304
RMH :: Target : RoutingMessageHandler + Send + Sync ,
298
305
OMH :: Target : OnionMessageHandler + Send + Sync ,
299
306
L :: Target : Logger + Send + Sync ,
300
307
UMH :: Target : CustomMessageHandler + Send + Sync ,
308
+ NS :: Target : NodeSigner + Send + Sync ,
301
309
{
302
310
let remote_addr = get_addr_from_stream ( & stream) ;
303
311
let ( reader, write_receiver, read_receiver, us) = Connection :: new ( stream) ;
@@ -336,22 +344,24 @@ pub fn setup_inbound<PM, CMH, RMH, OMH, L, UMH>(
336
344
/// The returned future will complete when the peer is disconnected and associated handling
337
345
/// futures are freed, though, because all processing futures are spawned with tokio::spawn, you do
338
346
/// not need to poll the provided future in order to make progress.
339
- pub fn setup_outbound < PM , CMH , RMH , OMH , L , UMH > (
347
+ pub fn setup_outbound < PM , CMH , RMH , OMH , L , UMH , NS > (
340
348
peer_manager : PM ,
341
349
their_node_id : PublicKey ,
342
350
stream : StdTcpStream ,
343
351
) -> impl std:: future:: Future < Output =( ) > where
344
- PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH > > + ' static + Send + Sync + Clone ,
352
+ PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH , NS > > + ' static + Send + Sync + Clone ,
345
353
CMH : Deref + ' static + Send + Sync ,
346
354
RMH : Deref + ' static + Send + Sync ,
347
355
OMH : Deref + ' static + Send + Sync ,
348
356
L : Deref + ' static + Send + Sync ,
349
357
UMH : Deref + ' static + Send + Sync ,
358
+ NS : Deref + ' static + Send + Sync ,
350
359
CMH :: Target : ChannelMessageHandler + Send + Sync ,
351
360
RMH :: Target : RoutingMessageHandler + Send + Sync ,
352
361
OMH :: Target : OnionMessageHandler + Send + Sync ,
353
362
L :: Target : Logger + Send + Sync ,
354
363
UMH :: Target : CustomMessageHandler + Send + Sync ,
364
+ NS :: Target : NodeSigner + Send + Sync ,
355
365
{
356
366
let remote_addr = get_addr_from_stream ( & stream) ;
357
367
let ( reader, mut write_receiver, read_receiver, us) = Connection :: new ( stream) ;
@@ -419,22 +429,24 @@ pub fn setup_outbound<PM, CMH, RMH, OMH, L, UMH>(
419
429
/// disconnected and associated handling futures are freed, though, because all processing in said
420
430
/// futures are spawned with tokio::spawn, you do not need to poll the second future in order to
421
431
/// make progress.
422
- pub async fn connect_outbound < PM , CMH , RMH , OMH , L , UMH > (
432
+ pub async fn connect_outbound < PM , CMH , RMH , OMH , L , UMH , NS > (
423
433
peer_manager : PM ,
424
434
their_node_id : PublicKey ,
425
435
addr : SocketAddr ,
426
436
) -> Option < impl std:: future:: Future < Output =( ) > > where
427
- PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH > > + ' static + Send + Sync + Clone ,
437
+ PM : Deref < Target = peer_handler:: PeerManager < SocketDescriptor , CMH , RMH , OMH , L , UMH , NS > > + ' static + Send + Sync + Clone ,
428
438
CMH : Deref + ' static + Send + Sync ,
429
439
RMH : Deref + ' static + Send + Sync ,
430
440
OMH : Deref + ' static + Send + Sync ,
431
441
L : Deref + ' static + Send + Sync ,
432
442
UMH : Deref + ' static + Send + Sync ,
443
+ NS : Deref + ' static + Send + Sync ,
433
444
CMH :: Target : ChannelMessageHandler + Send + Sync ,
434
445
RMH :: Target : RoutingMessageHandler + Send + Sync ,
435
446
OMH :: Target : OnionMessageHandler + Send + Sync ,
436
447
L :: Target : Logger + Send + Sync ,
437
448
UMH :: Target : CustomMessageHandler + Send + Sync ,
449
+ NS :: Target : NodeSigner + Send + Sync ,
438
450
{
439
451
if let Ok ( Ok ( stream) ) = time:: timeout ( Duration :: from_secs ( 10 ) , async { TcpStream :: connect ( & addr) . await . map ( |s| s. into_std ( ) . unwrap ( ) ) } ) . await {
440
452
Some ( setup_outbound ( peer_manager, their_node_id, stream) )
@@ -573,6 +585,7 @@ mod tests {
573
585
use lightning:: ln:: peer_handler:: { MessageHandler , PeerManager } ;
574
586
use lightning:: ln:: features:: NodeFeatures ;
575
587
use lightning:: util:: events:: * ;
588
+ use lightning:: util:: test_utils:: TestNodeSigner ;
576
589
use bitcoin:: secp256k1:: { Secp256k1 , SecretKey , PublicKey } ;
577
590
578
591
use tokio:: sync:: mpsc;
@@ -688,7 +701,7 @@ mod tests {
688
701
chan_handler : Arc :: clone ( & a_handler) ,
689
702
route_handler : Arc :: clone ( & a_handler) ,
690
703
onion_message_handler : Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ,
691
- } , a_key. clone ( ) , 0 , & [ 1 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ) ) ;
704
+ } , a_key. clone ( ) , 0 , & [ 1 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) , Arc :: new ( TestNodeSigner :: new ( a_key ) ) ) ) ;
692
705
693
706
let ( b_connected_sender, mut b_connected) = mpsc:: channel ( 1 ) ;
694
707
let ( b_disconnected_sender, mut b_disconnected) = mpsc:: channel ( 1 ) ;
@@ -703,7 +716,7 @@ mod tests {
703
716
chan_handler : Arc :: clone ( & b_handler) ,
704
717
route_handler : Arc :: clone ( & b_handler) ,
705
718
onion_message_handler : Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ,
706
- } , b_key. clone ( ) , 0 , & [ 2 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ) ) ;
719
+ } , b_key. clone ( ) , 0 , & [ 2 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) , Arc :: new ( TestNodeSigner :: new ( b_key ) ) ) ) ;
707
720
708
721
// We bind on localhost, hoping the environment is properly configured with a local
709
722
// address. This may not always be the case in containers and the like, so if this test is
@@ -756,7 +769,7 @@ mod tests {
756
769
chan_handler : Arc :: new ( lightning:: ln:: peer_handler:: ErroringMessageHandler :: new ( ) ) ,
757
770
onion_message_handler : Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ,
758
771
route_handler : Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ,
759
- } , a_key, 0 , & [ 1 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ) ) ;
772
+ } , a_key, 0 , & [ 1 ; 32 ] , Arc :: new ( TestLogger ( ) ) , Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) , Arc :: new ( TestNodeSigner :: new ( a_key ) ) ) ) ;
760
773
761
774
// Make two connections, one for an inbound and one for an outbound connection
762
775
let conn_a = {
0 commit comments