@@ -84,6 +84,8 @@ use std::time::Instant;
8484
8585#[ cfg( not( feature = "std" ) ) ]
8686use alloc:: boxed:: Box ;
87+ #[ cfg( all( not( c_bindings) , not( feature = "std" ) ) ) ]
88+ use alloc:: sync:: Arc ;
8789
8890/// `BackgroundProcessor` takes care of tasks that (1) need to happen periodically to keep
8991/// 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
331333 true
332334}
333335
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+
334434pub ( crate ) mod futures_util {
335435 use core:: future:: Future ;
336436 use core:: marker:: Unpin ;
@@ -3384,4 +3484,30 @@ mod tests {
33843484 r1. unwrap ( ) . unwrap ( ) ;
33853485 r2. unwrap ( )
33863486 }
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+ }
33873513}
0 commit comments