@@ -331,52 +331,60 @@ fn update_scorer<'a, S: Deref<Target = SC> + Send + Sync, SC: 'a + WriteableScor
331
331
true
332
332
}
333
333
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
+
334
340
#[ cfg( not( c_bindings) ) ]
335
341
type 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 <
340
346
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 ) ,
343
349
> ,
344
350
> ,
345
351
lightning:: routing:: scoring:: ProbabilisticScoringFeeParameters ,
346
352
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 ) ,
349
355
> ,
350
356
> ;
351
357
352
358
#[ cfg( not( c_bindings) ) ]
353
359
type 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 ) ,
357
363
> ;
358
364
359
365
#[ 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 ;
362
369
363
370
#[ cfg( all( not( c_bindings) , taproot) ) ]
364
- type DynSignerProvider = dyn lightning:: sign:: SignerProvider <
371
+ type DynSignerProvider = ( dyn lightning:: sign:: SignerProvider <
365
372
EcdsaSigner = lightning:: sign:: InMemorySigner ,
366
373
TaprootSigner = lightning:: sign:: InMemorySigner ,
367
- > ;
374
+ > + Send
375
+ + Sync ) ;
368
376
369
377
#[ cfg( not( c_bindings) ) ]
370
378
type 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 ) ,
375
383
& ' static DynSignerProvider ,
376
- & ' static dyn FeeEstimator ,
384
+ & ' static ( dyn FeeEstimator + Send + Sync ) ,
377
385
& ' static DynRouter ,
378
386
& ' static DynMessageRouter ,
379
- & ' static dyn Logger ,
387
+ & ' static ( dyn Logger + Send + Sync ) ,
380
388
> ;
381
389
382
390
/// 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<
385
393
pub const NO_ONION_MESSENGER : Option <
386
394
Arc <
387
395
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 ) ,
394
402
NodeIdLookUp = DynChannelManager ,
395
403
NL = & ' static DynChannelManager ,
396
404
MessageRouter = DynMessageRouter ,
@@ -414,20 +422,22 @@ pub const NO_ONION_MESSENGER: Option<
414
422
pub const NO_LIQUIDITY_MANAGER : Option <
415
423
Arc <
416
424
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 ) ,
421
429
AChannelManager = DynChannelManager ,
422
430
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 ) ,
431
441
> + Send
432
442
+ Sync ,
433
443
> ,
@@ -439,20 +449,22 @@ pub const NO_LIQUIDITY_MANAGER: Option<
439
449
pub const NO_LIQUIDITY_MANAGER_SYNC : Option <
440
450
Arc <
441
451
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 ) ,
446
456
AChannelManager = DynChannelManager ,
447
457
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 ) ,
456
468
> + Send
457
469
+ Sync ,
458
470
> ,
@@ -3582,15 +3594,13 @@ mod tests {
3582
3594
r2. unwrap ( )
3583
3595
}
3584
3596
3585
- #[ test]
3597
+ #[ tokio :: test]
3586
3598
#[ cfg( not( c_bindings) ) ]
3587
- fn test_no_consts ( ) {
3599
+ async fn test_no_consts ( ) {
3588
3600
// Compile-test the NO_* constants can be used.
3589
3601
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) ) ;
3592
3602
let bg_processor = BackgroundProcessor :: start (
3593
- persister ,
3603
+ Arc :: clone ( & nodes [ 0 ] . kv_store ) ,
3594
3604
move |_: Event | Ok ( ( ) ) ,
3595
3605
Arc :: clone ( & nodes[ 0 ] . chain_monitor ) ,
3596
3606
Arc :: clone ( & nodes[ 0 ] . node ) ,
@@ -3606,5 +3616,39 @@ mod tests {
3606
3616
if !std:: thread:: panicking ( ) {
3607
3617
bg_processor. stop ( ) . unwrap ( ) ;
3608
3618
}
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 ( ) ;
3609
3653
}
3610
3654
}
0 commit comments