@@ -331,52 +331,60 @@ fn update_scorer<'a, S: Deref<Target = SC> + Send + Sync, SC: 'a + WriteableScor
331331 true
332332}
333333
334+ #[ cfg( all( not( c_bindings) , feature = "std" ) ) ]
335+ type ScorerWrapper < T > = std:: sync:: RwLock < T > ;
336+
337+ #[ cfg( all( not( c_bindings) , not( feature = "std" ) ) ) ]
338+ type ScorerWrapper < T > = core:: cell:: RefCell < T > ;
339+
334340#[ cfg( not( c_bindings) ) ]
335341type DynRouter = lightning:: routing:: router:: DefaultRouter <
336- & ' static NetworkGraph < & ' static dyn Logger > ,
337- & ' static dyn Logger ,
338- & ' static dyn EntropySource ,
339- & ' static core :: cell :: RefCell <
342+ & ' static NetworkGraph < & ' static ( dyn Logger + Send + Sync ) > ,
343+ & ' static ( dyn Logger + Send + Sync ) ,
344+ & ' static ( dyn EntropySource + Send + Sync ) ,
345+ & ' static ScorerWrapper <
340346 lightning:: routing:: scoring:: ProbabilisticScorer <
341- & ' static NetworkGraph < & ' static dyn Logger > ,
342- & ' static dyn Logger ,
347+ & ' static NetworkGraph < & ' static ( dyn Logger + Send + Sync ) > ,
348+ & ' static ( dyn Logger + Send + Sync ) ,
343349 > ,
344350 > ,
345351 lightning:: routing:: scoring:: ProbabilisticScoringFeeParameters ,
346352 lightning:: routing:: scoring:: ProbabilisticScorer <
347- & ' static NetworkGraph < & ' static dyn Logger > ,
348- & ' static dyn Logger ,
353+ & ' static NetworkGraph < & ' static ( dyn Logger + Send + Sync ) > ,
354+ & ' static ( dyn Logger + Send + Sync ) ,
349355 > ,
350356> ;
351357
352358#[ cfg( not( c_bindings) ) ]
353359type DynMessageRouter = lightning:: onion_message:: messenger:: DefaultMessageRouter <
354- & ' static NetworkGraph < & ' static dyn Logger > ,
355- & ' static dyn Logger ,
356- & ' static dyn EntropySource ,
360+ & ' static NetworkGraph < & ' static ( dyn Logger + Send + Sync ) > ,
361+ & ' static ( dyn Logger + Send + Sync ) ,
362+ & ' static ( dyn EntropySource + Send + Sync ) ,
357363> ;
358364
359365#[ cfg( all( not( c_bindings) , not( taproot) ) ) ]
360- type DynSignerProvider =
361- dyn lightning:: sign:: SignerProvider < EcdsaSigner = lightning:: sign:: InMemorySigner > ;
366+ type DynSignerProvider = dyn lightning:: sign:: SignerProvider < EcdsaSigner = lightning:: sign:: InMemorySigner >
367+ + Send
368+ + Sync ;
362369
363370#[ cfg( all( not( c_bindings) , taproot) ) ]
364- type DynSignerProvider = dyn lightning:: sign:: SignerProvider <
371+ type DynSignerProvider = ( dyn lightning:: sign:: SignerProvider <
365372 EcdsaSigner = lightning:: sign:: InMemorySigner ,
366373 TaprootSigner = lightning:: sign:: InMemorySigner ,
367- > ;
374+ > + Send
375+ + Sync ) ;
368376
369377#[ cfg( not( c_bindings) ) ]
370378type DynChannelManager = lightning:: ln:: channelmanager:: ChannelManager <
371- & ' static dyn chain:: Watch < lightning:: sign:: InMemorySigner > ,
372- & ' static dyn BroadcasterInterface ,
373- & ' static dyn EntropySource ,
374- & ' static dyn lightning:: sign:: NodeSigner ,
379+ & ' static ( dyn chain:: Watch < lightning:: sign:: InMemorySigner > + Send + Sync ) ,
380+ & ' static ( dyn BroadcasterInterface + Send + Sync ) ,
381+ & ' static ( dyn EntropySource + Send + Sync ) ,
382+ & ' static ( dyn lightning:: sign:: NodeSigner + Send + Sync ) ,
375383 & ' static DynSignerProvider ,
376- & ' static dyn FeeEstimator ,
384+ & ' static ( dyn FeeEstimator + Send + Sync ) ,
377385 & ' static DynRouter ,
378386 & ' static DynMessageRouter ,
379- & ' static dyn Logger ,
387+ & ' static ( dyn Logger + Send + Sync ) ,
380388> ;
381389
382390/// When initializing a background processor without an onion messenger, this can be used to avoid
@@ -385,12 +393,12 @@ type DynChannelManager = lightning::ln::channelmanager::ChannelManager<
385393pub const NO_ONION_MESSENGER : Option <
386394 Arc <
387395 dyn AOnionMessenger <
388- EntropySource = dyn EntropySource ,
389- ES = & dyn EntropySource ,
390- NodeSigner = dyn lightning:: sign:: NodeSigner ,
391- NS = & dyn lightning:: sign:: NodeSigner ,
392- Logger = dyn Logger ,
393- L = & ' static dyn Logger ,
396+ EntropySource = dyn EntropySource + Send + Sync ,
397+ ES = & ( dyn EntropySource + Send + Sync ) ,
398+ NodeSigner = dyn lightning:: sign:: NodeSigner + Send + Sync ,
399+ NS = & ( dyn lightning:: sign:: NodeSigner + Send + Sync ) ,
400+ Logger = dyn Logger + Send + Sync ,
401+ L = & ' static ( dyn Logger + Send + Sync ) ,
394402 NodeIdLookUp = DynChannelManager ,
395403 NL = & ' static DynChannelManager ,
396404 MessageRouter = DynMessageRouter ,
@@ -414,20 +422,22 @@ pub const NO_ONION_MESSENGER: Option<
414422pub const NO_LIQUIDITY_MANAGER : Option <
415423 Arc <
416424 dyn ALiquidityManager <
417- EntropySource = dyn EntropySource ,
418- ES = & dyn EntropySource ,
419- NodeSigner = dyn lightning:: sign:: NodeSigner ,
420- NS = & dyn lightning:: sign:: NodeSigner ,
425+ EntropySource = dyn EntropySource + Send + Sync ,
426+ ES = & ( dyn EntropySource + Send + Sync ) ,
427+ NodeSigner = dyn lightning:: sign:: NodeSigner + Send + Sync ,
428+ NS = & ( dyn lightning:: sign:: NodeSigner + Send + Sync ) ,
421429 AChannelManager = DynChannelManager ,
422430 CM = & DynChannelManager ,
423- Filter = dyn chain:: Filter ,
424- C = & dyn chain:: Filter ,
425- KVStore = dyn lightning:: util:: persist:: KVStore ,
426- K = & dyn lightning:: util:: persist:: KVStore ,
427- TimeProvider = dyn lightning_liquidity:: utils:: time:: TimeProvider ,
428- TP = & dyn lightning_liquidity:: utils:: time:: TimeProvider ,
429- BroadcasterInterface = dyn lightning:: chain:: chaininterface:: BroadcasterInterface ,
430- T = & dyn BroadcasterInterface ,
431+ Filter = dyn chain:: Filter + Send + Sync ,
432+ C = & ( dyn chain:: Filter + Send + Sync ) ,
433+ KVStore = dyn lightning:: util:: persist:: KVStore + Send + Sync ,
434+ K = & ( dyn lightning:: util:: persist:: KVStore + Send + Sync ) ,
435+ TimeProvider = dyn lightning_liquidity:: utils:: time:: TimeProvider + Send + Sync ,
436+ TP = & ( dyn lightning_liquidity:: utils:: time:: TimeProvider + Send + Sync ) ,
437+ BroadcasterInterface = dyn lightning:: chain:: chaininterface:: BroadcasterInterface
438+ + Send
439+ + Sync ,
440+ T = & ( dyn BroadcasterInterface + Send + Sync ) ,
431441 > + Send
432442 + Sync ,
433443 > ,
@@ -439,20 +449,22 @@ pub const NO_LIQUIDITY_MANAGER: Option<
439449pub const NO_LIQUIDITY_MANAGER_SYNC : Option <
440450 Arc <
441451 dyn ALiquidityManagerSync <
442- EntropySource = dyn EntropySource ,
443- ES = & dyn EntropySource ,
444- NodeSigner = dyn lightning:: sign:: NodeSigner ,
445- NS = & dyn lightning:: sign:: NodeSigner ,
452+ EntropySource = dyn EntropySource + Send + Sync ,
453+ ES = & ( dyn EntropySource + Send + Sync ) ,
454+ NodeSigner = dyn lightning:: sign:: NodeSigner + Send + Sync ,
455+ NS = & ( dyn lightning:: sign:: NodeSigner + Send + Sync ) ,
446456 AChannelManager = DynChannelManager ,
447457 CM = & DynChannelManager ,
448- Filter = dyn chain:: Filter ,
449- C = & dyn chain:: Filter ,
450- KVStoreSync = dyn lightning:: util:: persist:: KVStoreSync ,
451- KS = & dyn lightning:: util:: persist:: KVStoreSync ,
452- TimeProvider = dyn lightning_liquidity:: utils:: time:: TimeProvider ,
453- TP = & dyn lightning_liquidity:: utils:: time:: TimeProvider ,
454- BroadcasterInterface = dyn lightning:: chain:: chaininterface:: BroadcasterInterface ,
455- T = & dyn BroadcasterInterface ,
458+ Filter = dyn chain:: Filter + Send + Sync ,
459+ C = & ( dyn chain:: Filter + Send + Sync ) ,
460+ KVStoreSync = dyn lightning:: util:: persist:: KVStoreSync + Send + Sync ,
461+ KS = & ( dyn lightning:: util:: persist:: KVStoreSync + Send + Sync ) ,
462+ TimeProvider = dyn lightning_liquidity:: utils:: time:: TimeProvider + Send + Sync ,
463+ TP = & ( dyn lightning_liquidity:: utils:: time:: TimeProvider + Send + Sync ) ,
464+ BroadcasterInterface = dyn lightning:: chain:: chaininterface:: BroadcasterInterface
465+ + Send
466+ + Sync ,
467+ T = & ( dyn BroadcasterInterface + Send + Sync ) ,
456468 > + Send
457469 + Sync ,
458470 > ,
@@ -3582,15 +3594,13 @@ mod tests {
35823594 r2. unwrap ( )
35833595 }
35843596
3585- #[ test]
3597+ #[ tokio :: test]
35863598 #[ cfg( not( c_bindings) ) ]
3587- fn test_no_consts ( ) {
3599+ async fn test_no_consts ( ) {
35883600 // Compile-test the NO_* constants can be used.
35893601 let ( _, nodes) = create_nodes ( 1 , "test_no_consts" ) ;
3590- let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
3591- let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
35923602 let bg_processor = BackgroundProcessor :: start (
3593- persister ,
3603+ Arc :: clone ( & nodes [ 0 ] . kv_store ) ,
35943604 move |_: Event | Ok ( ( ) ) ,
35953605 Arc :: clone ( & nodes[ 0 ] . chain_monitor ) ,
35963606 Arc :: clone ( & nodes[ 0 ] . node ) ,
@@ -3606,5 +3616,39 @@ mod tests {
36063616 if !std:: thread:: panicking ( ) {
36073617 bg_processor. stop ( ) . unwrap ( ) ;
36083618 }
3619+
3620+ let kv_store = KVStoreSyncWrapper ( Arc :: clone ( & nodes[ 0 ] . kv_store ) ) ;
3621+ let ( exit_sender, exit_receiver) = tokio:: sync:: watch:: channel ( ( ) ) ;
3622+ let sweeper_async: & ' static OutputSweeper < _ , _ , _ , _ , _ , _ , _ > = unsafe {
3623+ & * ( nodes[ 0 ] . sweeper . sweeper_async ( ) as * const OutputSweeper < _ , _ , _ , _ , _ , _ , _ > )
3624+ as & ' static OutputSweeper < _ , _ , _ , _ , _ , _ , _ >
3625+ } ;
3626+ let bp_future = super :: process_events_async (
3627+ kv_store,
3628+ move |_: Event | async move { Ok ( ( ) ) } ,
3629+ Arc :: clone ( & nodes[ 0 ] . chain_monitor ) ,
3630+ Arc :: clone ( & nodes[ 0 ] . node ) ,
3631+ crate :: NO_ONION_MESSENGER ,
3632+ nodes[ 0 ] . no_gossip_sync ( ) ,
3633+ Arc :: clone ( & nodes[ 0 ] . peer_manager ) ,
3634+ crate :: NO_LIQUIDITY_MANAGER ,
3635+ Some ( sweeper_async) ,
3636+ Arc :: clone ( & nodes[ 0 ] . logger ) ,
3637+ Some ( Arc :: clone ( & nodes[ 0 ] . scorer ) ) ,
3638+ move |dur : Duration | {
3639+ let mut exit_receiver = exit_receiver. clone ( ) ;
3640+ Box :: pin ( async move {
3641+ tokio:: select! {
3642+ _ = tokio:: time:: sleep( dur) => false ,
3643+ _ = exit_receiver. changed( ) => true ,
3644+ }
3645+ } )
3646+ } ,
3647+ false ,
3648+ || Some ( Duration :: ZERO ) ,
3649+ ) ;
3650+ let t1 = tokio:: spawn ( bp_future) ;
3651+ exit_sender. send ( ( ) ) . unwrap ( ) ;
3652+ t1. await . unwrap ( ) . unwrap ( ) ;
36093653 }
36103654}
0 commit comments