@@ -28,7 +28,9 @@ use core::ops::Deref;
2828use crate :: prelude:: { new_hash_map, HashMap , String } ;
2929
3030use super :: msgs:: { Lsps5AppName , Lsps5WebhookUrl } ;
31- use super :: service:: { from_rfc3339, DefaultTimeProvider , TimeProvider } ;
31+ #[ cfg( feature = "std" ) ]
32+ use super :: service:: DefaultTimeProvider ;
33+ use super :: service:: { from_rfc3339, TimeProvider } ;
3234use super :: url_utils:: Url ;
3335use core:: time:: Duration ;
3436use lightning:: sign:: EntropySource ;
@@ -43,22 +45,25 @@ pub struct LSPS5ClientConfig {
4345 /// Maximum age in seconds for cached responses (default: 3600 - 1 hour)
4446 pub response_max_age_secs : u64 ,
4547 /// Time provider for LSPS5 service
46- pub time_provider : Arc < dyn TimeProvider > ,
48+ pub time_provider : Option < Arc < dyn TimeProvider > > ,
4749}
4850
4951impl Default for LSPS5ClientConfig {
5052 fn default ( ) -> Self {
5153 Self {
5254 response_max_age_secs : DEFAULT_RESPONSE_MAX_AGE_SECS ,
53- time_provider : Arc :: new ( DefaultTimeProvider ) ,
55+ #[ cfg( feature = "std" ) ]
56+ time_provider : Some ( Arc :: new ( DefaultTimeProvider ) ) ,
57+ #[ cfg( not( feature = "std" ) ) ]
58+ time_provider : None ,
5459 }
5560 }
5661}
5762
5863impl LSPS5ClientConfig {
5964 /// Set a custom time provider for the LSPS5 service
6065 pub fn with_time_provider ( mut self , time_provider : impl TimeProvider + ' static ) -> Self {
61- self . time_provider = Arc :: new ( time_provider) ;
66+ self . time_provider = Some ( Arc :: new ( time_provider) ) ;
6267 self
6368 }
6469}
@@ -136,9 +141,9 @@ where
136141 /// event queue, and LSPS5ClientConfig
137142 pub ( crate ) fn new (
138143 entropy_source : ES , pending_messages : Arc < MessageQueue > , pending_events : Arc < EventQueue > ,
139- config : LSPS5ClientConfig ,
144+ mut config : LSPS5ClientConfig ,
140145 ) -> Self {
141- let time_provider = config. time_provider . clone ( ) ;
146+ let time_provider = config. time_provider . take ( ) . expect ( "Time provider should be present" ) ;
142147 Self {
143148 pending_messages,
144149 pending_events,
@@ -525,12 +530,12 @@ where
525530 Ok ( timestamp_dt) => {
526531 // Check timestamp is within 10 minutes of current time
527532 let now = time_provider. now ( ) ;
528- let diff ;
529- if now > timestamp_dt {
530- diff = now. checked_sub ( timestamp_dt) . unwrap ( ) ;
533+
534+ let diff = if now > timestamp_dt {
535+ now. checked_sub ( timestamp_dt) . unwrap ( )
531536 } else {
532- diff = timestamp_dt. checked_sub ( now) . unwrap ( ) ;
533- }
537+ timestamp_dt. checked_sub ( now) . unwrap ( )
538+ } ;
534539 if diff > Duration :: from_secs ( 600 ) {
535540 // 10 minutes
536541 return Err ( LightningError {
0 commit comments