Skip to content

Commit 230fcd3

Browse files
fixup: create LiquidityManager::new_with_custom_time_provider
1 parent 31c2a91 commit 230fcd3

File tree

2 files changed

+56
-50
lines changed

2 files changed

+56
-50
lines changed

lightning-background-processor/src/lib.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,7 @@ mod tests {
11421142
use lightning::util::sweep::{OutputSpendStatus, OutputSweeper, PRUNE_DELAY_BLOCKS};
11431143
use lightning::util::test_utils;
11441144
use lightning::{get_event, get_event_msg};
1145+
use lightning_liquidity::lsps5::service::TimeProvider;
11451146
use lightning_liquidity::LiquidityManager;
11461147
use lightning_persister::fs_store::FilesystemStore;
11471148
use lightning_rapid_gossip_sync::RapidGossipSync;
@@ -1578,6 +1579,16 @@ mod tests {
15781579
path.to_str().unwrap().to_string()
15791580
}
15801581

1582+
pub struct DefaultTimeProvider;
1583+
1584+
#[cfg(feature = "std")]
1585+
impl TimeProvider for DefaultTimeProvider {
1586+
fn duration_since_epoch(&self) -> Duration {
1587+
use std::time::{SystemTime, UNIX_EPOCH};
1588+
SystemTime::now().duration_since(UNIX_EPOCH).expect("system time before Unix epoch")
1589+
}
1590+
}
1591+
15811592
fn create_nodes(num_nodes: usize, persist_dir: &str) -> (String, Vec<Node>) {
15821593
let persist_temp_path = env::temp_dir().join(persist_dir);
15831594
let persist_dir = persist_temp_path.to_string_lossy().to_string();
@@ -1676,14 +1687,15 @@ mod tests {
16761687
logger.clone(),
16771688
keys_manager.clone(),
16781689
));
1679-
let liquidity_manager = Arc::new(LiquidityManager::new(
1690+
let time_provider = Arc::new(DefaultTimeProvider);
1691+
let liquidity_manager = Arc::new(LiquidityManager::new_with_custom_time_provider(
16801692
Arc::clone(&keys_manager),
16811693
Arc::clone(&manager),
16821694
None,
16831695
None,
16841696
None,
16851697
None,
1686-
None,
1698+
time_provider,
16871699
));
16881700
let node = Node {
16891701
node: manager,

lightning-liquidity/src/manager.rs

+42-48
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ use crate::lsps0::ser::{
1212
use crate::lsps0::service::LSPS0ServiceHandler;
1313
use crate::lsps5::client::{LSPS5ClientConfig, LSPS5ClientHandler};
1414
use crate::lsps5::msgs::LSPS5Message;
15+
#[cfg(feature = "time")]
16+
use crate::lsps5::service::DefaultTimeProvider;
1517
use crate::lsps5::service::{LSPS5ServiceConfig, LSPS5ServiceHandler, TimeProvider};
1618
use crate::message_queue::MessageQueue;
1719

@@ -169,10 +171,34 @@ where
169171
///
170172
/// Sets up the required protocol message handlers based on the given
171173
/// [`LiquidityClientConfig`] and [`LiquidityServiceConfig`].
174+
#[cfg(feature = "time")]
172175
pub fn new(
173176
entropy_source: ES, channel_manager: CM, chain_source: Option<C>,
174177
chain_params: Option<ChainParameters>, service_config: Option<LiquidityServiceConfig>,
175-
client_config: Option<LiquidityClientConfig>, time_provider: Option<Arc<dyn TimeProvider>>,
178+
client_config: Option<LiquidityClientConfig>,
179+
) -> Self {
180+
let time_provider = Arc::new(DefaultTimeProvider);
181+
Self::new_with_custom_time_provider(
182+
entropy_source,
183+
channel_manager,
184+
chain_source,
185+
chain_params,
186+
service_config,
187+
client_config,
188+
time_provider,
189+
)
190+
}
191+
192+
/// Constructor for the [`LiquidityManager`] with a custom time provider.
193+
///
194+
/// This should be used on non-std platforms where access to the system time is not
195+
/// available.
196+
/// Sets up the required protocol message handlers based on the given
197+
/// [`LiquidityClientConfig`] and [`LiquidityServiceConfig`].
198+
pub fn new_with_custom_time_provider(
199+
entropy_source: ES, channel_manager: CM, chain_source: Option<C>,
200+
chain_params: Option<ChainParameters>, service_config: Option<LiquidityServiceConfig>,
201+
client_config: Option<LiquidityClientConfig>, time_provider: Arc<dyn TimeProvider>,
176202
) -> Self
177203
where {
178204
let pending_messages = Arc::new(MessageQueue::new());
@@ -182,7 +208,7 @@ where {
182208
let mut supported_protocols = Vec::new();
183209

184210
let lsps2_client_handler = client_config.as_ref().and_then(|config| {
185-
config.lsps2_client_config.as_ref().map(|config| {
211+
config.lsps2_client_config.map(|config| {
186212
LSPS2ClientHandler::new(
187213
entropy_source.clone(),
188214
Arc::clone(&pending_messages),
@@ -209,29 +235,13 @@ where {
209235

210236
let lsps5_client_handler = client_config.as_ref().and_then(|config| {
211237
config.lsps5_client_config.as_ref().map(|config| {
212-
if time_provider.is_some() {
213-
LSPS5ClientHandler::new_with_custom_time_provider(
214-
entropy_source.clone(),
215-
Arc::clone(&pending_messages),
216-
Arc::clone(&pending_events),
217-
config.clone(),
218-
time_provider.clone().unwrap(),
219-
)
220-
} else {
221-
#[cfg(feature = "time")]
222-
{
223-
LSPS5ClientHandler::new(
224-
entropy_source.clone(),
225-
Arc::clone(&pending_messages),
226-
Arc::clone(&pending_events),
227-
config.clone(),
228-
)
229-
}
230-
#[cfg(not(feature = "time"))]
231-
{
232-
panic!("A custom time_provider must be provided if the 'time' feature is not enabled.");
233-
}
234-
}
238+
LSPS5ClientHandler::new(
239+
entropy_source.clone(),
240+
Arc::clone(&pending_messages),
241+
Arc::clone(&pending_events),
242+
config.clone(),
243+
time_provider.clone(),
244+
)
235245
})
236246
});
237247

@@ -243,29 +253,13 @@ where {
243253
supported_protocols.push(number);
244254
}
245255

246-
if time_provider.is_some() {
247-
return LSPS5ServiceHandler::new_with_custom_time_provider(
248-
Arc::clone(&pending_events),
249-
Arc::clone(&pending_messages),
250-
channel_manager.clone(),
251-
config.clone(),
252-
time_provider.unwrap(),
253-
);
254-
} else {
255-
#[cfg(feature = "time")]
256-
{
257-
return LSPS5ServiceHandler::new(
258-
Arc::clone(&pending_events),
259-
Arc::clone(&pending_messages),
260-
channel_manager.clone(),
261-
config.clone(),
262-
);
263-
}
264-
#[cfg(not(feature = "time"))]
265-
{
266-
panic!("A custom time_provider must be provided if the 'time' feature is not enabled.");
267-
}
268-
}
256+
return LSPS5ServiceHandler::new(
257+
Arc::clone(&pending_events),
258+
Arc::clone(&pending_messages),
259+
channel_manager.clone(),
260+
config.clone(),
261+
time_provider,
262+
);
269263
})
270264
});
271265

0 commit comments

Comments
 (0)