@@ -84,6 +84,8 @@ use std::time::Instant;
84
84
85
85
#[ cfg( not( feature = "std" ) ) ]
86
86
use alloc:: boxed:: Box ;
87
+ #[ cfg( all( not( c_bindings) , not( feature = "std" ) ) ) ]
88
+ use alloc:: sync:: Arc ;
87
89
88
90
/// `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
89
91
/// Rust-Lightning running properly, and (2) either can or should be run in the background. Its
@@ -331,6 +333,104 @@ fn update_scorer<'a, S: 'static + Deref<Target = SC> + Send + Sync, SC: 'a + Wri
331
333
true
332
334
}
333
335
336
+ #[ cfg( not( c_bindings) ) ]
337
+ type DynRouter = lightning:: routing:: router:: DefaultRouter <
338
+ & ' static NetworkGraph < & ' static dyn Logger > ,
339
+ & ' static dyn Logger ,
340
+ & ' static dyn EntropySource ,
341
+ & ' static core:: cell:: RefCell <
342
+ lightning:: routing:: scoring:: ProbabilisticScorer <
343
+ & ' static NetworkGraph < & ' static dyn Logger > ,
344
+ & ' static dyn Logger ,
345
+ > ,
346
+ > ,
347
+ lightning:: routing:: scoring:: ProbabilisticScoringFeeParameters ,
348
+ lightning:: routing:: scoring:: ProbabilisticScorer <
349
+ & ' static NetworkGraph < & ' static dyn Logger > ,
350
+ & ' static dyn Logger ,
351
+ > ,
352
+ > ;
353
+
354
+ #[ cfg( not( c_bindings) ) ]
355
+ type DynMessageRouter = lightning:: onion_message:: messenger:: DefaultMessageRouter <
356
+ & ' static NetworkGraph < & ' static dyn Logger > ,
357
+ & ' static dyn Logger ,
358
+ & ' static dyn EntropySource ,
359
+ > ;
360
+
361
+ #[ cfg( all( not( c_bindings) , not( taproot) ) ) ]
362
+ type DynSignerProvider =
363
+ dyn lightning:: sign:: SignerProvider < EcdsaSigner = lightning:: sign:: InMemorySigner > ;
364
+
365
+ #[ cfg( all( not( c_bindings) , taproot) ) ]
366
+ type DynSignerProvider = dyn lightning:: sign:: SignerProvider <
367
+ EcdsaSigner = lightning:: sign:: InMemorySigner ,
368
+ TaprootSigner = lightning:: sign:: InMemorySigner ,
369
+ > ;
370
+
371
+ #[ cfg( not( c_bindings) ) ]
372
+ type DynChannelManager = lightning:: ln:: channelmanager:: ChannelManager <
373
+ & ' static dyn chain:: Watch < lightning:: sign:: InMemorySigner > ,
374
+ & ' static dyn BroadcasterInterface ,
375
+ & ' static dyn EntropySource ,
376
+ & ' static dyn lightning:: sign:: NodeSigner ,
377
+ & ' static DynSignerProvider ,
378
+ & ' static dyn FeeEstimator ,
379
+ & ' static DynRouter ,
380
+ & ' static DynMessageRouter ,
381
+ & ' static dyn Logger ,
382
+ > ;
383
+
384
+ /// When initializing a background processor without an onion messenger, this can be used to avoid
385
+ /// specifying a concrete `OnionMessenger` type.
386
+ #[ cfg( not( c_bindings) ) ]
387
+ pub const NO_ONION_MESSENGER : Option <
388
+ Arc <
389
+ dyn AOnionMessenger <
390
+ EntropySource = dyn EntropySource ,
391
+ ES = & dyn EntropySource ,
392
+ NodeSigner = dyn lightning:: sign:: NodeSigner ,
393
+ NS = & dyn lightning:: sign:: NodeSigner ,
394
+ Logger = dyn Logger ,
395
+ L = & ' static dyn Logger ,
396
+ NodeIdLookUp = DynChannelManager ,
397
+ NL = & ' static DynChannelManager ,
398
+ MessageRouter = DynMessageRouter ,
399
+ MR = & ' static DynMessageRouter ,
400
+ OffersMessageHandler = lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
401
+ OMH = & ' static lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
402
+ AsyncPaymentsMessageHandler = lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
403
+ APH = & ' static lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
404
+ DNSResolverMessageHandler = lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
405
+ DRH = & ' static lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
406
+ CustomOnionMessageHandler = lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
407
+ CMH = & ' static lightning:: ln:: peer_handler:: IgnoringMessageHandler ,
408
+ > + Send
409
+ + Sync ,
410
+ > ,
411
+ > = None ;
412
+
413
+ /// When initializing a background processor without a liquidity manager, this can be used to avoid
414
+ /// specifying a concrete `LiquidityManager` type.
415
+ #[ cfg( not( c_bindings) ) ]
416
+ pub const NO_LIQUIDITY_MANAGER : Option <
417
+ Arc <
418
+ dyn ALiquidityManager <
419
+ EntropySource = dyn EntropySource ,
420
+ ES = & dyn EntropySource ,
421
+ NodeSigner = dyn lightning:: sign:: NodeSigner ,
422
+ NS = & dyn lightning:: sign:: NodeSigner ,
423
+ AChannelManager = DynChannelManager ,
424
+ CM = & DynChannelManager ,
425
+ Filter = dyn chain:: Filter ,
426
+ C = & dyn chain:: Filter ,
427
+ TimeProvider = dyn lightning_liquidity:: utils:: time:: TimeProvider ,
428
+ TP = & dyn lightning_liquidity:: utils:: time:: TimeProvider ,
429
+ > + Send
430
+ + Sync ,
431
+ > ,
432
+ > = None ;
433
+
334
434
pub ( crate ) mod futures_util {
335
435
use core:: future:: Future ;
336
436
use core:: marker:: Unpin ;
@@ -3384,4 +3484,30 @@ mod tests {
3384
3484
r1. unwrap ( ) . unwrap ( ) ;
3385
3485
r2. unwrap ( )
3386
3486
}
3487
+
3488
+ #[ test]
3489
+ #[ cfg( not( c_bindings) ) ]
3490
+ fn test_no_consts ( ) {
3491
+ // Compile-test the NO_* constants can be used.
3492
+ let ( _, nodes) = create_nodes ( 1 , "test_no_consts" ) ;
3493
+ let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
3494
+ let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
3495
+ let bg_processor = BackgroundProcessor :: start (
3496
+ persister,
3497
+ move |_: Event | Ok ( ( ) ) ,
3498
+ Arc :: clone ( & nodes[ 0 ] . chain_monitor ) ,
3499
+ Arc :: clone ( & nodes[ 0 ] . node ) ,
3500
+ crate :: NO_ONION_MESSENGER ,
3501
+ nodes[ 0 ] . no_gossip_sync ( ) ,
3502
+ Arc :: clone ( & nodes[ 0 ] . peer_manager ) ,
3503
+ crate :: NO_LIQUIDITY_MANAGER ,
3504
+ Some ( Arc :: clone ( & nodes[ 0 ] . sweeper ) ) ,
3505
+ Arc :: clone ( & nodes[ 0 ] . logger ) ,
3506
+ Some ( Arc :: clone ( & nodes[ 0 ] . scorer ) ) ,
3507
+ ) ;
3508
+
3509
+ if !std:: thread:: panicking ( ) {
3510
+ bg_processor. stop ( ) . unwrap ( ) ;
3511
+ }
3512
+ }
3387
3513
}
0 commit comments