Skip to content

Commit 0f4db0d

Browse files
committed
Let LiquidityManager take a KVStore and add Sync wrapper
We add `KVStore` to `LiquidityManager`, which will be used in the next commits. We also add a `LiquidityManagerSync` wrapper that wraps a the `LiquidityManager` interface which will soon become async due to usage of the async `KVStore`.
1 parent 32314e3 commit 0f4db0d

File tree

7 files changed

+535
-43
lines changed

7 files changed

+535
-43
lines changed

fuzz/src/lsps_message.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use lightning::util::test_utils::{
2121
};
2222

2323
use lightning_liquidity::lsps0::ser::LSPS_MESSAGE_TYPE_ID;
24-
use lightning_liquidity::LiquidityManager;
24+
use lightning_liquidity::LiquidityManagerSync;
2525

2626
use core::time::Duration;
2727

@@ -77,12 +77,13 @@ pub fn do_test(data: &[u8]) {
7777
genesis_block.header.time,
7878
));
7979

80-
let liquidity_manager = Arc::new(LiquidityManager::new(
80+
let liquidity_manager = Arc::new(LiquidityManagerSync::new(
8181
Arc::clone(&keys_manager),
8282
Arc::clone(&keys_manager),
8383
Arc::clone(&manager),
8484
None::<Arc<dyn Filter + Send + Sync>>,
8585
None,
86+
kv_store,
8687
None,
8788
None,
8889
));

lightning-background-processor/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ possiblyrandom = { version = "0.2", path = "../possiblyrandom", default-features
3131
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "time" ] }
3232
lightning = { version = "0.2.0", path = "../lightning", features = ["_test_utils"] }
3333
lightning-invoice = { version = "0.34.0", path = "../lightning-invoice" }
34+
lightning-liquidity = { version = "0.2.0", path = "../lightning-liquidity", default-features = false, features = ["_test_utils"] }
3435
lightning-persister = { version = "0.2.0", path = "../lightning-persister" }
3536

3637
[lints]

lightning-background-processor/src/lib.rs

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ use lightning::util::wakers::Sleeper;
6969
use lightning_rapid_gossip_sync::RapidGossipSync;
7070

7171
use lightning_liquidity::ALiquidityManager;
72+
#[cfg(feature = "std")]
73+
use lightning_liquidity::ALiquidityManagerSync;
7274

7375
use core::ops::Deref;
7476
use core::time::Duration;
@@ -424,6 +426,31 @@ pub const NO_LIQUIDITY_MANAGER: Option<
424426
CM = &DynChannelManager,
425427
Filter = dyn chain::Filter,
426428
C = &dyn chain::Filter,
429+
KVStore = dyn lightning::util::persist::KVStore,
430+
K = &dyn lightning::util::persist::KVStore,
431+
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider,
432+
TP = &dyn lightning_liquidity::utils::time::TimeProvider,
433+
> + Send
434+
+ Sync,
435+
>,
436+
> = None;
437+
438+
/// When initializing a background processor without a liquidity manager, this can be used to avoid
439+
/// specifying a concrete `LiquidityManagerSync` type.
440+
#[cfg(all(not(c_bindings), feature = "std"))]
441+
pub const NO_LIQUIDITY_MANAGER_SYNC: Option<
442+
Arc<
443+
dyn ALiquidityManagerSync<
444+
EntropySource = dyn EntropySource,
445+
ES = &dyn EntropySource,
446+
NodeSigner = dyn lightning::sign::NodeSigner,
447+
NS = &dyn lightning::sign::NodeSigner,
448+
AChannelManager = DynChannelManager,
449+
CM = &DynChannelManager,
450+
Filter = dyn chain::Filter,
451+
C = &dyn chain::Filter,
452+
KVStoreSync = dyn lightning::util::persist::KVStoreSync,
453+
KS = &dyn lightning::util::persist::KVStoreSync,
427454
TimeProvider = dyn lightning_liquidity::utils::time::TimeProvider,
428455
TP = &dyn lightning_liquidity::utils::time::TimeProvider,
429456
> + Send
@@ -731,7 +758,7 @@ use futures_util::{dummy_waker, Joiner, OptionalSelector, Selector, SelectorOutp
731758
/// # type P2PGossipSync<UL> = lightning::routing::gossip::P2PGossipSync<Arc<NetworkGraph>, Arc<UL>, Arc<Logger>>;
732759
/// # type ChannelManager<B, F, FE> = lightning::ln::channelmanager::SimpleArcChannelManager<ChainMonitor<B, F, FE>, B, FE, Logger>;
733760
/// # type OnionMessenger<B, F, FE> = lightning::onion_message::messenger::OnionMessenger<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<Logger>, Arc<ChannelManager<B, F, FE>>, Arc<lightning::onion_message::messenger::DefaultMessageRouter<Arc<NetworkGraph>, Arc<Logger>, Arc<lightning::sign::KeysManager>>>, Arc<ChannelManager<B, F, FE>>, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler, lightning::ln::peer_handler::IgnoringMessageHandler>;
734-
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>, Arc<DefaultTimeProvider>>;
761+
/// # type LiquidityManager<B, F, FE> = lightning_liquidity::LiquidityManager<Arc<lightning::sign::KeysManager>, Arc<lightning::sign::KeysManager>, Arc<ChannelManager<B, F, FE>>, Arc<F>, Arc<Store>, Arc<DefaultTimeProvider>>;
735762
/// # type Scorer = RwLock<lightning::routing::scoring::ProbabilisticScorer<Arc<NetworkGraph>, Arc<Logger>>>;
736763
/// # type PeerManager<B, F, FE, UL> = lightning::ln::peer_handler::SimpleArcPeerManager<SocketDescriptor, ChainMonitor<B, F, FE>, B, FE, Arc<UL>, Logger, F, StoreSync>;
737764
/// # type OutputSweeper<B, D, FE, F, O> = lightning::util::sweep::OutputSweeper<Arc<B>, Arc<D>, Arc<FE>, Arc<F>, Arc<Store>, Arc<Logger>, Arc<O>>;
@@ -1450,7 +1477,7 @@ impl BackgroundProcessor {
14501477
CM::Target: AChannelManager,
14511478
OM::Target: AOnionMessenger,
14521479
PM::Target: APeerManager,
1453-
LM::Target: ALiquidityManager,
1480+
LM::Target: ALiquidityManagerSync,
14541481
D::Target: ChangeDestinationSourceSync,
14551482
O::Target: 'static + OutputSpender,
14561483
K::Target: 'static + KVStoreSync,
@@ -1793,7 +1820,7 @@ mod tests {
17931820
use lightning::util::test_utils;
17941821
use lightning::{get_event, get_event_msg};
17951822
use lightning_liquidity::utils::time::DefaultTimeProvider;
1796-
use lightning_liquidity::LiquidityManager;
1823+
use lightning_liquidity::{ALiquidityManagerSync, LiquidityManagerSync};
17971824
use lightning_persister::fs_store::FilesystemStore;
17981825
use lightning_rapid_gossip_sync::RapidGossipSync;
17991826
use std::collections::VecDeque;
@@ -1890,11 +1917,12 @@ mod tests {
18901917
IgnoringMessageHandler,
18911918
>;
18921919

1893-
type LM = LiquidityManager<
1920+
type LM = LiquidityManagerSync<
18941921
Arc<KeysManager>,
18951922
Arc<KeysManager>,
18961923
Arc<ChannelManager>,
18971924
Arc<dyn Filter + Sync + Send>,
1925+
Arc<Persister>,
18981926
Arc<DefaultTimeProvider>,
18991927
>;
19001928

@@ -2342,12 +2370,13 @@ mod tests {
23422370
Arc::clone(&logger),
23432371
Arc::clone(&keys_manager),
23442372
));
2345-
let liquidity_manager = Arc::new(LiquidityManager::new(
2373+
let liquidity_manager = Arc::new(LiquidityManagerSync::new(
23462374
Arc::clone(&keys_manager),
23472375
Arc::clone(&keys_manager),
23482376
Arc::clone(&manager),
23492377
None,
23502378
None,
2379+
Arc::clone(&kv_store),
23512380
None,
23522381
None,
23532382
));
@@ -2727,7 +2756,7 @@ mod tests {
27272756
Some(Arc::clone(&nodes[0].messenger)),
27282757
nodes[0].rapid_gossip_sync(),
27292758
Arc::clone(&nodes[0].peer_manager),
2730-
Some(Arc::clone(&nodes[0].liquidity_manager)),
2759+
Some(nodes[0].liquidity_manager.get_lm_async()),
27312760
Some(nodes[0].sweeper.sweeper_async()),
27322761
Arc::clone(&nodes[0].logger),
27332762
Some(Arc::clone(&nodes[0].scorer)),
@@ -3236,7 +3265,7 @@ mod tests {
32363265
Some(Arc::clone(&nodes[0].messenger)),
32373266
nodes[0].rapid_gossip_sync(),
32383267
Arc::clone(&nodes[0].peer_manager),
3239-
Some(Arc::clone(&nodes[0].liquidity_manager)),
3268+
Some(nodes[0].liquidity_manager.get_lm_async()),
32403269
Some(nodes[0].sweeper.sweeper_async()),
32413270
Arc::clone(&nodes[0].logger),
32423271
Some(Arc::clone(&nodes[0].scorer)),
@@ -3451,7 +3480,7 @@ mod tests {
34513480
Some(Arc::clone(&nodes[0].messenger)),
34523481
nodes[0].no_gossip_sync(),
34533482
Arc::clone(&nodes[0].peer_manager),
3454-
Some(Arc::clone(&nodes[0].liquidity_manager)),
3483+
Some(nodes[0].liquidity_manager.get_lm_async()),
34553484
Some(nodes[0].sweeper.sweeper_async()),
34563485
Arc::clone(&nodes[0].logger),
34573486
Some(Arc::clone(&nodes[0].scorer)),
@@ -3500,7 +3529,7 @@ mod tests {
35003529
crate::NO_ONION_MESSENGER,
35013530
nodes[0].no_gossip_sync(),
35023531
Arc::clone(&nodes[0].peer_manager),
3503-
crate::NO_LIQUIDITY_MANAGER,
3532+
crate::NO_LIQUIDITY_MANAGER_SYNC,
35043533
Some(Arc::clone(&nodes[0].sweeper)),
35053534
Arc::clone(&nodes[0].logger),
35063535
Some(Arc::clone(&nodes[0].scorer)),

lightning-liquidity/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ default = ["std", "time"]
1818
std = ["lightning/std"]
1919
time = ["std"]
2020
backtrace = ["dep:backtrace"]
21+
_test_utils = []
2122

2223
[dependencies]
2324
lightning = { version = "0.2.0", path = "../lightning", default-features = false }

lightning-liquidity/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@ mod tests;
7373
pub mod utils;
7474

7575
pub use manager::{
76-
ALiquidityManager, LiquidityClientConfig, LiquidityManager, LiquidityServiceConfig,
76+
ALiquidityManager, ALiquidityManagerSync, LiquidityClientConfig, LiquidityManager,
77+
LiquidityManagerSync, LiquidityServiceConfig,
7778
};

0 commit comments

Comments
 (0)