@@ -30,6 +30,7 @@ use crate::lsps0::ser::{
3030use crate :: prelude:: { new_hash_map, HashMap } ;
3131use crate :: sync:: { Arc , Mutex , RwLock } ;
3232use crate :: utils;
33+ use crate :: utils:: time:: TimeProvider ;
3334
3435use lightning:: ln:: channelmanager:: AChannelManager ;
3536use lightning:: ln:: msgs:: { ErrorAction , LightningError } ;
@@ -50,38 +51,44 @@ pub struct LSPS1ServiceConfig {
5051}
5152
5253/// The main object allowing to send and receive bLIP-51 / LSPS1 messages.
53- pub struct LSPS1ServiceHandler < ES : Deref , CM : Deref + Clone , K : Deref + Clone >
54+ pub struct LSPS1ServiceHandler < ES : Deref , CM : Deref + Clone , K : Deref + Clone , TP : Deref + Clone >
5455where
5556 ES :: Target : EntropySource ,
5657 CM :: Target : AChannelManager ,
5758 K :: Target : KVStore ,
59+ TP :: Target : TimeProvider ,
5860{
5961 entropy_source : ES ,
6062 _channel_manager : CM ,
6163 pending_messages : Arc < MessageQueue > ,
6264 pending_events : Arc < EventQueue < K > > ,
6365 per_peer_state : RwLock < HashMap < PublicKey , Mutex < PeerState > > > ,
66+ time_provider : TP ,
6467 config : LSPS1ServiceConfig ,
6568}
6669
67- impl < ES : Deref , CM : Deref + Clone , K : Deref + Clone > LSPS1ServiceHandler < ES , CM , K >
70+ impl < ES : Deref , CM : Deref + Clone , K : Deref + Clone , TP : Deref + Clone >
71+ LSPS1ServiceHandler < ES , CM , K , TP >
6872where
6973 ES :: Target : EntropySource ,
7074 CM :: Target : AChannelManager ,
7175 ES :: Target : EntropySource ,
7276 K :: Target : KVStore ,
77+ TP :: Target : TimeProvider ,
7378{
7479 /// Constructs a `LSPS1ServiceHandler`.
7580 pub ( crate ) fn new (
7681 entropy_source : ES , pending_messages : Arc < MessageQueue > ,
77- pending_events : Arc < EventQueue < K > > , channel_manager : CM , config : LSPS1ServiceConfig ,
82+ pending_events : Arc < EventQueue < K > > , channel_manager : CM , time_provider : TP ,
83+ config : LSPS1ServiceConfig ,
7884 ) -> Self {
7985 Self {
8086 entropy_source,
8187 _channel_manager : channel_manager,
8288 pending_messages,
8389 pending_events,
8490 per_peer_state : RwLock :: new ( new_hash_map ( ) ) ,
91+ time_provider,
8592 config,
8693 }
8794 }
@@ -186,7 +193,7 @@ where
186193 /// [`LSPS1ServiceEvent::RequestForPaymentDetails`]: crate::lsps1::event::LSPS1ServiceEvent::RequestForPaymentDetails
187194 pub fn send_payment_details (
188195 & self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
189- payment_details : LSPS1PaymentInfo , created_at : LSPSDateTime ,
196+ payment_details : LSPS1PaymentInfo ,
190197 ) -> Result < ( ) , APIError > {
191198 let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
192199
@@ -203,6 +210,9 @@ where
203210 match request {
204211 LSPS1Request :: CreateOrder ( params) => {
205212 let order_id = self . generate_order_id ( ) ;
213+ let created_at = LSPSDateTime :: new_from_duration_since_epoch (
214+ self . time_provider . duration_since_epoch ( ) ,
215+ ) ;
206216 let order = peer_state_lock. new_order (
207217 order_id. clone ( ) ,
208218 params. order ,
@@ -326,12 +336,13 @@ where
326336 }
327337}
328338
329- impl < ES : Deref , CM : Deref + Clone , K : Deref + Clone > LSPSProtocolMessageHandler
330- for LSPS1ServiceHandler < ES , CM , K >
339+ impl < ES : Deref , CM : Deref + Clone , K : Deref + Clone , TP : Deref + Clone > LSPSProtocolMessageHandler
340+ for LSPS1ServiceHandler < ES , CM , K , TP >
331341where
332342 ES :: Target : EntropySource ,
333343 CM :: Target : AChannelManager ,
334344 K :: Target : KVStore ,
345+ TP :: Target : TimeProvider ,
335346{
336347 type ProtocolMessage = LSPS1Message ;
337348 const PROTOCOL_NUMBER : Option < u16 > = Some ( 1 ) ;
0 commit comments