Skip to content

Commit 1f60a63

Browse files
committed
f Don't ignore the example doc-comment
1 parent 33fbb57 commit 1f60a63

File tree

1 file changed

+47
-4
lines changed
  • lightning-background-processor/src

1 file changed

+47
-4
lines changed

lightning-background-processor/src/lib.rs

+47-4
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,42 @@ use core::task;
482482
///
483483
/// For example, in order to process background events in a [Tokio](https://tokio.rs/) task, you
484484
/// could setup `process_events_async` like this:
485-
/// ```ignore
485+
/// ```
486+
/// # struct MyPersister {}
487+
/// # impl lightning::util::persist::KVStorePersister for MyPersister {
488+
/// # fn persist<W: lightning::util::ser::Writeable>(&self, key: &str, object: &W) -> lightning::io::Result<()> {
489+
/// # Ok(())
490+
/// # }
491+
/// #
492+
/// # }
493+
/// # struct MyEventHandler {}
494+
/// # impl MyEventHandler {
495+
/// # async fn handle_event(&self, _: lightning::events::Event) {}
496+
/// # }
497+
/// # #[derive(Eq, PartialEq, Clone, Hash)]
498+
/// # struct MySocketDescriptor {}
499+
/// # impl lightning::ln::peer_handler::SocketDescriptor for MySocketDescriptor {
500+
/// # fn send_data(&mut self, _data: &[u8], _resume_read: bool) -> usize { 0 }
501+
/// # fn disconnect_socket(&mut self) {}
502+
/// # }
503+
/// # use std::sync::{Arc, Mutex};
504+
/// # use std::sync::atomic::{AtomicBool, Ordering};
505+
/// # use lightning_background_processor::{process_events_async, GossipSync};
506+
/// # type MyBroadcaster = dyn lightning::chain::chaininterface::BroadcasterInterface + Send + Sync;
507+
/// # type MyFeeEstimator = dyn lightning::chain::chaininterface::FeeEstimator + Send + Sync;
508+
/// # type MyNodeSigner = dyn lightning::chain::keysinterface::NodeSigner + Send + Sync;
509+
/// # type MyUtxoLookup = dyn lightning::routing::utxo::UtxoLookup + Send + Sync;
510+
/// # type MyFilter = dyn lightning::chain::Filter + Send + Sync;
511+
/// # type MyLogger = dyn lightning::util::logger::Logger + Send + Sync;
512+
/// # type MyChainMonitor = lightning::chain::chainmonitor::ChainMonitor<lightning::chain::keysinterface::InMemorySigner, Arc<MyFilter>, Arc<MyBroadcaster>, Arc<MyFeeEstimator>, Arc<MyLogger>, Arc<MyPersister>>;
513+
/// # type MyPeerManager = lightning::ln::peer_handler::SimpleArcPeerManager<MySocketDescriptor, MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyUtxoLookup, MyLogger>;
514+
/// # type MyNetworkGraph = lightning::routing::gossip::NetworkGraph<Arc<MyLogger>>;
515+
/// # type MyGossipSync = lightning::routing::gossip::P2PGossipSync<Arc<MyNetworkGraph>, Arc<MyUtxoLookup>, Arc<MyLogger>>;
516+
/// # type MyChannelManager = lightning::ln::channelmanager::SimpleArcChannelManager<MyChainMonitor, MyBroadcaster, MyFeeEstimator, MyLogger>;
517+
/// # type MyScorer = Mutex<lightning::routing::scoring::ProbabilisticScorer<Arc<MyNetworkGraph>, Arc<MyLogger>>>;
518+
///
519+
/// # fn setup_background_processing(my_persister: Arc<MyPersister>, my_event_handler: Arc<MyEventHandler>, my_chain_monitor: Arc<MyChainMonitor>, my_channel_manager: Arc<MyChannelManager>, my_gossip_sync: Arc<MyGossipSync>, my_logger: Arc<MyLogger>, my_scorer: Arc<MyScorer>, my_peer_manager: Arc<MyPeerManager>) {
520+
/// let stop_background_processing = Arc::new(AtomicBool::new(false));
486521
/// let background_persister = Arc::clone(&my_persister);
487522
/// let background_event_handler = Arc::clone(&my_event_handler);
488523
/// let background_chain_mon = Arc::clone(&my_chain_monitor);
@@ -495,9 +530,16 @@ use core::task;
495530
/// // Setup the sleeper.
496531
/// let should_stop = AtomicBool::new(false);
497532
///
498-
/// let sleeper = |d| async move {
499-
/// tokio::time::sleep(d).await;
500-
/// should_stop.load(Ordering::Relaxed)
533+
/// let sleeper = move |d| {
534+
/// let stop = Arc::clone(&stop_background_processing);
535+
/// Box::pin(async move {
536+
/// if stop.load(Ordering::Acquire) {
537+
/// true
538+
/// } else {
539+
/// tokio::time::sleep(d).await;
540+
/// false
541+
/// }
542+
/// })
501543
/// };
502544
///
503545
/// let mobile_interruptable_platform = false;
@@ -521,6 +563,7 @@ use core::task;
521563
///
522564
/// // Stop the background processing.
523565
/// should_stop.store(true, Ordering::Relaxed);
566+
/// # }
524567
///```
525568
#[cfg(feature = "futures")]
526569
pub async fn process_events_async<

0 commit comments

Comments
 (0)