3232//! type TxBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface + Send + Sync;
3333//! type FeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator + Send + Sync;
3434//! type Logger = dyn lightning::util::logger::Logger + Send + Sync;
35+ //! type NodeSigner = dyn lightning::chain::keysinterface::NodeSigner + Send + Sync;
3536//! type ChainAccess = dyn lightning::chain::Access + Send + Sync;
3637//! type ChainFilter = dyn lightning::chain::Filter + Send + Sync;
3738//! type DataPersister = dyn lightning::chain::chainmonitor::Persist<lightning::chain::keysinterface::InMemorySigner> + Send + Sync;
@@ -80,6 +81,7 @@ use tokio::{io, time};
8081use tokio:: sync:: mpsc;
8182use tokio:: io:: { AsyncReadExt , AsyncWrite , AsyncWriteExt } ;
8283
84+ use lightning:: chain:: keysinterface:: NodeSigner ;
8385use lightning:: ln:: peer_handler;
8486use lightning:: ln:: peer_handler:: SocketDescriptor as LnSocketTrait ;
8587use lightning:: ln:: peer_handler:: CustomMessageHandler ;
@@ -123,21 +125,23 @@ struct Connection {
123125 id : u64 ,
124126}
125127impl 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 > (
127129 peer_manager : PM ,
128130 mut event_receiver : mpsc:: Receiver < ( ) > ,
129131 ) 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 ,
131133 CMH : Deref + ' static + Send + Sync ,
132134 RMH : Deref + ' static + Send + Sync ,
133135 OMH : Deref + ' static + Send + Sync ,
134136 L : Deref + ' static + Send + Sync ,
135137 UMH : Deref + ' static + Send + Sync ,
138+ NS : Deref + ' static + Send + Sync ,
136139 CMH :: Target : ChannelMessageHandler + Send + Sync ,
137140 RMH :: Target : RoutingMessageHandler + Send + Sync ,
138141 OMH :: Target : OnionMessageHandler + Send + Sync ,
139142 L :: Target : Logger + Send + Sync ,
140143 UMH :: Target : CustomMessageHandler + Send + Sync ,
144+ NS :: Target : NodeSigner + Send + Sync ,
141145 {
142146 loop {
143147 if event_receiver. recv ( ) . await . is_none ( ) {
@@ -147,24 +151,26 @@ impl Connection {
147151 }
148152 }
149153
150- async fn schedule_read < PM , CMH , RMH , OMH , L , UMH > (
154+ async fn schedule_read < PM , CMH , RMH , OMH , L , UMH , NS > (
151155 peer_manager : PM ,
152156 us : Arc < Mutex < Self > > ,
153157 mut reader : io:: ReadHalf < TcpStream > ,
154158 mut read_wake_receiver : mpsc:: Receiver < ( ) > ,
155159 mut write_avail_receiver : mpsc:: Receiver < ( ) > ,
156160 ) 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 ,
158162 CMH : Deref + ' static + Send + Sync ,
159163 RMH : Deref + ' static + Send + Sync ,
160164 OMH : Deref + ' static + Send + Sync ,
161165 L : Deref + ' static + Send + Sync ,
162166 UMH : Deref + ' static + Send + Sync ,
167+ NS : Deref + ' static + Send + Sync ,
163168 CMH :: Target : ChannelMessageHandler + ' static + Send + Sync ,
164169 RMH :: Target : RoutingMessageHandler + ' static + Send + Sync ,
165170 OMH :: Target : OnionMessageHandler + ' static + Send + Sync ,
166171 L :: Target : Logger + ' static + Send + Sync ,
167172 UMH :: Target : CustomMessageHandler + ' static + Send + Sync ,
173+ NS :: Target : NodeSigner + ' static + Send + Sync ,
168174 {
169175 // Create a waker to wake up poll_event_process, above
170176 let ( event_waker, event_receiver) = mpsc:: channel ( 1 ) ;
@@ -283,21 +289,23 @@ fn get_addr_from_stream(stream: &StdTcpStream) -> Option<NetAddress> {
283289/// The returned future will complete when the peer is disconnected and associated handling
284290/// futures are freed, though, because all processing futures are spawned with tokio::spawn, you do
285291/// 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 > (
287293 peer_manager : PM ,
288294 stream : StdTcpStream ,
289295) -> 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 ,
291297 CMH : Deref + ' static + Send + Sync ,
292298 RMH : Deref + ' static + Send + Sync ,
293299 OMH : Deref + ' static + Send + Sync ,
294300 L : Deref + ' static + Send + Sync ,
295301 UMH : Deref + ' static + Send + Sync ,
302+ NS : Deref + ' static + Send + Sync ,
296303 CMH :: Target : ChannelMessageHandler + Send + Sync ,
297304 RMH :: Target : RoutingMessageHandler + Send + Sync ,
298305 OMH :: Target : OnionMessageHandler + Send + Sync ,
299306 L :: Target : Logger + Send + Sync ,
300307 UMH :: Target : CustomMessageHandler + Send + Sync ,
308+ NS :: Target : NodeSigner + Send + Sync ,
301309{
302310 let remote_addr = get_addr_from_stream ( & stream) ;
303311 let ( reader, write_receiver, read_receiver, us) = Connection :: new ( stream) ;
@@ -336,22 +344,24 @@ pub fn setup_inbound<PM, CMH, RMH, OMH, L, UMH>(
336344/// The returned future will complete when the peer is disconnected and associated handling
337345/// futures are freed, though, because all processing futures are spawned with tokio::spawn, you do
338346/// 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 > (
340348 peer_manager : PM ,
341349 their_node_id : PublicKey ,
342350 stream : StdTcpStream ,
343351) -> 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 ,
345353 CMH : Deref + ' static + Send + Sync ,
346354 RMH : Deref + ' static + Send + Sync ,
347355 OMH : Deref + ' static + Send + Sync ,
348356 L : Deref + ' static + Send + Sync ,
349357 UMH : Deref + ' static + Send + Sync ,
358+ NS : Deref + ' static + Send + Sync ,
350359 CMH :: Target : ChannelMessageHandler + Send + Sync ,
351360 RMH :: Target : RoutingMessageHandler + Send + Sync ,
352361 OMH :: Target : OnionMessageHandler + Send + Sync ,
353362 L :: Target : Logger + Send + Sync ,
354363 UMH :: Target : CustomMessageHandler + Send + Sync ,
364+ NS :: Target : NodeSigner + Send + Sync ,
355365{
356366 let remote_addr = get_addr_from_stream ( & stream) ;
357367 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>(
419429/// disconnected and associated handling futures are freed, though, because all processing in said
420430/// futures are spawned with tokio::spawn, you do not need to poll the second future in order to
421431/// 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 > (
423433 peer_manager : PM ,
424434 their_node_id : PublicKey ,
425435 addr : SocketAddr ,
426436) -> 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 ,
428438 CMH : Deref + ' static + Send + Sync ,
429439 RMH : Deref + ' static + Send + Sync ,
430440 OMH : Deref + ' static + Send + Sync ,
431441 L : Deref + ' static + Send + Sync ,
432442 UMH : Deref + ' static + Send + Sync ,
443+ NS : Deref + ' static + Send + Sync ,
433444 CMH :: Target : ChannelMessageHandler + Send + Sync ,
434445 RMH :: Target : RoutingMessageHandler + Send + Sync ,
435446 OMH :: Target : OnionMessageHandler + Send + Sync ,
436447 L :: Target : Logger + Send + Sync ,
437448 UMH :: Target : CustomMessageHandler + Send + Sync ,
449+ NS :: Target : NodeSigner + Send + Sync ,
438450{
439451 if let Ok ( Ok ( stream) ) = time:: timeout ( Duration :: from_secs ( 10 ) , async { TcpStream :: connect ( & addr) . await . map ( |s| s. into_std ( ) . unwrap ( ) ) } ) . await {
440452 Some ( setup_outbound ( peer_manager, their_node_id, stream) )
@@ -573,6 +585,7 @@ mod tests {
573585 use lightning:: ln:: peer_handler:: { MessageHandler , PeerManager } ;
574586 use lightning:: ln:: features:: NodeFeatures ;
575587 use lightning:: util:: events:: * ;
588+ use lightning:: util:: test_utils:: TestNodeSigner ;
576589 use bitcoin:: secp256k1:: { Secp256k1 , SecretKey , PublicKey } ;
577590
578591 use tokio:: sync:: mpsc;
@@ -688,7 +701,7 @@ mod tests {
688701 chan_handler : Arc :: clone ( & a_handler) ,
689702 route_handler : Arc :: clone ( & a_handler) ,
690703 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 ) ) ) ) ;
692705
693706 let ( b_connected_sender, mut b_connected) = mpsc:: channel ( 1 ) ;
694707 let ( b_disconnected_sender, mut b_disconnected) = mpsc:: channel ( 1 ) ;
@@ -703,7 +716,7 @@ mod tests {
703716 chan_handler : Arc :: clone ( & b_handler) ,
704717 route_handler : Arc :: clone ( & b_handler) ,
705718 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 ) ) ) ) ;
707720
708721 // We bind on localhost, hoping the environment is properly configured with a local
709722 // address. This may not always be the case in containers and the like, so if this test is
@@ -756,7 +769,7 @@ mod tests {
756769 chan_handler : Arc :: new ( lightning:: ln:: peer_handler:: ErroringMessageHandler :: new ( ) ) ,
757770 onion_message_handler : Arc :: new ( lightning:: ln:: peer_handler:: IgnoringMessageHandler { } ) ,
758771 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 ) ) ) ) ;
760773
761774 // Make two connections, one for an inbound and one for an outbound connection
762775 let conn_a = {
0 commit comments