@@ -313,7 +313,7 @@ macro_rules! define_run_body {
313313 $channel_manager: ident, $process_channel_manager_events: expr,
314314 $onion_messenger: ident, $process_onion_message_handler_events: expr,
315315 $peer_manager: ident, $gossip_sync: ident,
316- $sweeper: ident ,
316+ $sweeper: expr ,
317317 $logger: ident, $scorer: ident, $loop_exit_check: expr, $await: expr, $get_timer: expr,
318318 $timer_elapsed: expr, $check_slow_await: expr, $time_fetch: expr,
319319 ) => { {
@@ -473,7 +473,7 @@ macro_rules! define_run_body {
473473
474474 if $timer_elapsed( & mut last_sweeper_call, SWEEPER_TIMER ) {
475475 log_trace!( $logger, "Regenerate sweeper spends if necessary" ) ;
476- let _ = $sweeper. regenerate_and_broadcast_spend_if_necessary_locked ( ) ;
476+ let _ = $sweeper;
477477 last_sweeper_call = $get_timer( SWEEPER_TIMER ) ;
478478 }
479479 }
@@ -602,7 +602,7 @@ pub(crate) mod futures_util {
602602 }
603603}
604604#[ cfg( feature = "futures" ) ]
605- use core:: task;
605+ use core:: { task, future :: Future } ;
606606#[ cfg( feature = "futures" ) ]
607607use futures_util:: { dummy_waker, OptionalSelector , Selector , SelectorOutput } ;
608608
@@ -757,6 +757,10 @@ pub async fn process_events_async<
757757 + Sync ,
758758 CM : ' static + Deref + Send + Sync ,
759759 OM : ' static + Deref + Send + Sync ,
760+ D : ' static + Deref + Send + Sync ,
761+ O : ' static + Deref + Send + Sync ,
762+ K : ' static + Deref + Send + Sync ,
763+ OS : ' static + Deref < Target = OutputSweeper < T , D , F , CF , K , L , O > > + Send + Sync ,
760764 PGS : ' static + Deref < Target = P2PGossipSync < G , UL , L > > + Send + Sync ,
761765 RGS : ' static + Deref < Target = RapidGossipSync < G , L > > + Send ,
762766 PM : ' static + Deref + Send + Sync ,
@@ -768,12 +772,13 @@ pub async fn process_events_async<
768772> (
769773 persister : PS , event_handler : EventHandler , chain_monitor : M , channel_manager : CM ,
770774 onion_messenger : Option < OM > , gossip_sync : GossipSync < PGS , RGS , G , UL , L > , peer_manager : PM ,
775+ sweeper : OS ,
771776 logger : L , scorer : Option < S > , sleeper : Sleeper , mobile_interruptable_platform : bool ,
772777 fetch_time : FetchTime ,
773778) -> Result < ( ) , lightning:: io:: Error >
774779where
775780 UL :: Target : ' static + UtxoLookup ,
776- CF :: Target : ' static + chain:: Filter ,
781+ CF :: Target : ' static + chain:: Filter + Sync + Send ,
777782 T :: Target : ' static + BroadcasterInterface ,
778783 F :: Target : ' static + FeeEstimator ,
779784 L :: Target : ' static + Logger ,
@@ -782,6 +787,9 @@ where
782787 CM :: Target : AChannelManager + Send + Sync ,
783788 OM :: Target : AOnionMessenger + Send + Sync ,
784789 PM :: Target : APeerManager + Send + Sync ,
790+ O :: Target : ' static + OutputSpender + Send + Sync ,
791+ D :: Target : ' static + ChangeDestinationSource + Send + Sync ,
792+ K :: Target : ' static + KVStore + Send + Sync ,
785793{
786794 let mut should_break = false ;
787795 let async_event_handler = |event| {
@@ -825,6 +833,7 @@ where
825833 } ,
826834 peer_manager,
827835 gossip_sync,
836+ sweeper. regenerate_and_broadcast_spend_if_necessary_async( ) . await ,
828837 logger,
829838 scorer,
830839 should_break,
@@ -995,7 +1004,7 @@ impl BackgroundProcessor {
9951004 } ,
9961005 peer_manager,
9971006 gossip_sync,
998- sweeper,
1007+ sweeper. regenerate_and_broadcast_spend_if_necessary ( ) ,
9991008 logger,
10001009 scorer,
10011010 stop_thread. load( Ordering :: Acquire ) ,
@@ -1108,8 +1117,7 @@ mod tests {
11081117 use lightning:: routing:: gossip:: { NetworkGraph , P2PGossipSync } ;
11091118 use lightning:: routing:: router:: { CandidateRouteHop , DefaultRouter , Path , RouteHop } ;
11101119 use lightning:: routing:: scoring:: { ChannelUsage , LockableScore , ScoreLookUp , ScoreUpdate } ;
1111- use lightning:: routing:: utxo:: UtxoLookup ;
1112- use lightning:: sign:: { ChangeDestinationSource , InMemorySigner , KeysManager } ;
1120+ use lightning:: sign:: { AsyncGetChangeDestinationScriptResult , ChangeDestinationSource , InMemorySigner , KeysManager } ;
11131121 use lightning:: types:: features:: { ChannelFeatures , NodeFeatures } ;
11141122 use lightning:: types:: payment:: PaymentHash ;
11151123 use lightning:: util:: config:: UserConfig ;
@@ -1544,8 +1552,10 @@ mod tests {
15441552 struct TestWallet { }
15451553
15461554 impl ChangeDestinationSource for TestWallet {
1547- fn get_change_destination_script ( & self ) -> Result < ScriptBuf , ( ) > {
1548- Ok ( ScriptBuf :: new ( ) )
1555+ fn get_change_destination_script < ' a > ( & self ) -> AsyncGetChangeDestinationScriptResult < ' a , ScriptBuf > {
1556+ Box :: pin ( async move {
1557+ Ok ( ScriptBuf :: new ( ) )
1558+ } )
15491559 }
15501560 }
15511561
@@ -2027,6 +2037,7 @@ mod tests {
20272037 Some ( nodes[ 0 ] . messenger . clone ( ) ) ,
20282038 nodes[ 0 ] . rapid_gossip_sync ( ) ,
20292039 nodes[ 0 ] . peer_manager . clone ( ) ,
2040+ nodes[ 0 ] . sweeper . clone ( ) ,
20302041 nodes[ 0 ] . logger . clone ( ) ,
20312042 Some ( nodes[ 0 ] . scorer . clone ( ) ) ,
20322043 move |dur : Duration | {
@@ -2514,6 +2525,7 @@ mod tests {
25142525 Some ( nodes[ 0 ] . messenger . clone ( ) ) ,
25152526 nodes[ 0 ] . rapid_gossip_sync ( ) ,
25162527 nodes[ 0 ] . peer_manager . clone ( ) ,
2528+ nodes[ 0 ] . sweeper . clone ( ) ,
25172529 nodes[ 0 ] . logger . clone ( ) ,
25182530 Some ( nodes[ 0 ] . scorer . clone ( ) ) ,
25192531 move |dur : Duration | {
@@ -2727,6 +2739,7 @@ mod tests {
27272739 Some ( nodes[ 0 ] . messenger . clone ( ) ) ,
27282740 nodes[ 0 ] . no_gossip_sync ( ) ,
27292741 nodes[ 0 ] . peer_manager . clone ( ) ,
2742+ nodes[ 0 ] . sweeper . clone ( ) ,
27302743 nodes[ 0 ] . logger . clone ( ) ,
27312744 Some ( nodes[ 0 ] . scorer . clone ( ) ) ,
27322745 move |dur : Duration | {
0 commit comments