pub struct BackgroundProcessor { /* private fields */ }
Expand description

BackgroundProcessor takes care of tasks that (1) need to happen periodically to keep Rust-Lightning running properly, and (2) either can or should be run in the background. Its responsibilities are:

It will also call PeerManager::process_events periodically though this shouldn’t be relied upon as doing so may result in high latency.

Note

If ChannelManager persistence fails and the persisted manager becomes out-of-date, then there is a risk of channels force-closing on startup when the manager realizes it’s outdated. However, as long as ChannelMonitor backups are sound, no funds besides those used for unilateral chain closure fees are at risk.

Implementations

Start a background thread that takes care of responsibilities enumerated in the top-level documentation.

The thread runs indefinitely unless the object is dropped, stop is called, or Persister::persist_manager returns an error. In case of an error, the error is retrieved by calling either join or stop.

Data Persistence

Persister::persist_manager is responsible for writing out the ChannelManager to disk, and/or uploading to one or more backup services. See ChannelManager::write for writing out a ChannelManager. See the lightning-persister crate for LDK’s provided implementation.

Persister::persist_graph is responsible for writing out the NetworkGraph to disk, if GossipSync is supplied. See NetworkGraph::write for writing out a NetworkGraph. See the lightning-persister crate for LDK’s provided implementation.

Typically, users should either implement Persister::persist_manager to never return an error or call join and handle any error that may arise. For the latter case, BackgroundProcessor must be restarted by calling start again after handling the error.

Event Handling

event_handler is responsible for handling events that users should be notified of (e.g., payment failed). BackgroundProcessor may decorate the given EventHandler with common functionality implemented by other handlers.

Rapid Gossip Sync

If rapid gossip sync is meant to run at startup, pass RapidGossipSync via gossip_sync to indicate that the BackgroundProcessor should not prune the NetworkGraph instance until the RapidGossipSync instance completes its first sync.

Join BackgroundProcessor’s thread, returning any error that occurred while persisting ChannelManager.

Panics

This function panics if the background thread has panicked such as while persisting or handling events.

Stop BackgroundProcessor’s thread, returning any error that occurred while persisting ChannelManager.

Panics

This function panics if the background thread has panicked such as while persisting or handling events.

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.