11
11
12
12
#![ cfg_attr( docsrs, feature( doc_auto_cfg) ) ]
13
13
14
+ #![ cfg_attr( all( not( feature = "std" ) , not( test) ) , no_std) ]
15
+
16
+ #[ cfg( any( test, feature = "std" ) ) ]
17
+ extern crate core;
18
+
14
19
#[ macro_use] extern crate lightning;
15
20
extern crate lightning_rapid_gossip_sync;
16
21
@@ -28,12 +33,19 @@ use lightning::util::events::{Event, EventHandler, EventsProvider};
28
33
use lightning:: util:: logger:: Logger ;
29
34
use lightning:: util:: persist:: Persister ;
30
35
use lightning_rapid_gossip_sync:: RapidGossipSync ;
36
+ use lightning:: io;
37
+
38
+ use core:: ops:: Deref ;
39
+ use core:: time:: Duration ;
40
+
41
+ #[ cfg( feature = "std" ) ]
31
42
use std:: sync:: Arc ;
32
- use std:: sync:: atomic:: { AtomicBool , Ordering } ;
33
- use std:: thread;
34
- use std:: thread:: JoinHandle ;
35
- use std:: time:: { Duration , Instant } ;
36
- use std:: ops:: Deref ;
43
+ #[ cfg( feature = "std" ) ]
44
+ use core:: sync:: atomic:: { AtomicBool , Ordering } ;
45
+ #[ cfg( feature = "std" ) ]
46
+ use std:: thread:: { self , JoinHandle } ;
47
+ #[ cfg( feature = "std" ) ]
48
+ use std:: time:: Instant ;
37
49
38
50
#[ cfg( feature = "futures" ) ]
39
51
use futures_util:: { select_biased, future:: FutureExt , task} ;
@@ -62,6 +74,7 @@ use futures_util::{select_biased, future::FutureExt, task};
62
74
///
63
75
/// [`ChannelMonitor`]: lightning::chain::channelmonitor::ChannelMonitor
64
76
/// [`Event`]: lightning::util::events::Event
77
+ #[ cfg( feature = "std" ) ]
65
78
#[ must_use = "BackgroundProcessor will immediately stop on drop. It should be stored until shutdown." ]
66
79
pub struct BackgroundProcessor {
67
80
stop_thread : Arc < AtomicBool > ,
@@ -285,8 +298,14 @@ macro_rules! define_run_body {
285
298
if $timer_elapsed( & mut last_prune_call, if have_pruned { NETWORK_PRUNE_TIMER } else { FIRST_NETWORK_PRUNE_TIMER } ) {
286
299
// The network graph must not be pruned while rapid sync completion is pending
287
300
if let Some ( network_graph) = $gossip_sync. prunable_network_graph( ) {
288
- log_trace!( $logger, "Pruning and persisting network graph." ) ;
289
- network_graph. remove_stale_channels_and_tracking( ) ;
301
+ #[ cfg( feature = "std" ) ] {
302
+ log_trace!( $logger, "Pruning and persisting network graph." ) ;
303
+ network_graph. remove_stale_channels_and_tracking( ) ;
304
+ }
305
+ #[ cfg( not( feature = "std" ) ) ] {
306
+ log_warn!( $logger, "Not pruning network graph, consider enabling `std` or doing so manually with remove_stale_channels_and_tracking_with_time." ) ;
307
+ log_trace!( $logger, "Persisting network graph." ) ;
308
+ }
290
309
291
310
if let Err ( e) = $persister. persist_graph( network_graph) {
292
311
log_error!( $logger, "Error: Failed to persist network graph, check your disk and permissions {}" , e)
@@ -334,6 +353,11 @@ macro_rules! define_run_body {
334
353
/// future which outputs true, the loop will exit and this function's future will complete.
335
354
///
336
355
/// See [`BackgroundProcessor::start`] for information on which actions this handles.
356
+ ///
357
+ /// Requires the `futures` feature. Note that while this method is available without the `std`
358
+ /// feature, doing so will skip calling [`NetworkGraph::remove_stale_channels_and_tracking`],
359
+ /// you should call [`NetworkGraph::remove_stale_channels_and_tracking_with_time`] regularly
360
+ /// manually instead.
337
361
#[ cfg( feature = "futures" ) ]
338
362
pub async fn process_events_async <
339
363
' a ,
@@ -370,7 +394,7 @@ pub async fn process_events_async<
370
394
persister : PS , event_handler : EventHandler , chain_monitor : M , channel_manager : CM ,
371
395
gossip_sync : GossipSync < PGS , RGS , G , CA , L > , peer_manager : PM , logger : L , scorer : Option < S > ,
372
396
sleeper : Sleeper ,
373
- ) -> Result < ( ) , std :: io:: Error >
397
+ ) -> Result < ( ) , io:: Error >
374
398
where
375
399
CA :: Target : ' static + chain:: Access ,
376
400
CF :: Target : ' static + chain:: Filter ,
@@ -419,6 +443,7 @@ where
419
443
} )
420
444
}
421
445
446
+ #[ cfg( feature = "std" ) ]
422
447
impl BackgroundProcessor {
423
448
/// Start a background thread that takes care of responsibilities enumerated in the [top-level
424
449
/// documentation].
@@ -574,13 +599,14 @@ impl BackgroundProcessor {
574
599
}
575
600
}
576
601
602
+ #[ cfg( feature = "std" ) ]
577
603
impl Drop for BackgroundProcessor {
578
604
fn drop ( & mut self ) {
579
605
self . stop_and_join_thread ( ) . unwrap ( ) ;
580
606
}
581
607
}
582
608
583
- #[ cfg( test) ]
609
+ #[ cfg( all ( feature = "std" , test) ) ]
584
610
mod tests {
585
611
use bitcoin:: blockdata:: block:: BlockHeader ;
586
612
use bitcoin:: blockdata:: constants:: genesis_block;
0 commit comments