@@ -177,6 +177,8 @@ where
177
177
fn handle_get_info_request (
178
178
& self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
179
179
) -> Result < ( ) , LightningError > {
180
+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
181
+
180
182
let response = LSPS1Response :: GetInfo ( LSPS1GetInfoResponse {
181
183
options : self
182
184
. config
@@ -190,15 +192,17 @@ where
190
192
} ) ;
191
193
192
194
let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
193
- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
195
+ message_queue_notifier . enqueue ( counterparty_node_id, msg) ;
194
196
Ok ( ( ) )
195
197
}
196
198
197
199
fn handle_create_order_request (
198
200
& self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
199
201
params : LSPS1CreateOrderRequest ,
200
202
) -> Result < ( ) , LightningError > {
203
+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
201
204
let event_queue_notifier = self . pending_events . notifier ( ) ;
205
+
202
206
if !is_valid ( & params. order , & self . config . supported_options . as_ref ( ) . unwrap ( ) ) {
203
207
let response = LSPS1Response :: CreateOrderError ( LSPSResponseError {
204
208
code : LSPS1_CREATE_ORDER_REQUEST_ORDER_MISMATCH_ERROR_CODE ,
@@ -209,7 +213,7 @@ where
209
213
) ) ,
210
214
} ) ;
211
215
let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
212
- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
216
+ message_queue_notifier . enqueue ( counterparty_node_id, msg) ;
213
217
return Err ( LightningError {
214
218
err : format ! (
215
219
"Client order does not match any supported options: {:?}" ,
@@ -250,66 +254,47 @@ where
250
254
& self , request_id : LSPSRequestId , counterparty_node_id : & PublicKey ,
251
255
payment : LSPS1PaymentInfo , created_at : LSPSDateTime ,
252
256
) -> Result < ( ) , APIError > {
253
- let ( result, response) = {
254
- let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
255
-
256
- match outer_state_lock. get ( counterparty_node_id) {
257
- Some ( inner_state_lock) => {
258
- let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
259
-
260
- match peer_state_lock. pending_requests . remove ( & request_id) {
261
- Some ( LSPS1Request :: CreateOrder ( params) ) => {
262
- let order_id = self . generate_order_id ( ) ;
263
- let channel = OutboundCRChannel :: new (
264
- params. order . clone ( ) ,
265
- created_at. clone ( ) ,
266
- order_id. clone ( ) ,
267
- payment. clone ( ) ,
268
- ) ;
269
-
270
- peer_state_lock. insert_outbound_channel ( order_id. clone ( ) , channel) ;
271
-
272
- let response = LSPS1Response :: CreateOrder ( LSPS1CreateOrderResponse {
273
- order : params. order ,
274
- order_id,
275
- order_state : LSPS1OrderState :: Created ,
276
- created_at,
277
- payment,
278
- channel : None ,
279
- } ) ;
280
-
281
- ( Ok ( ( ) ) , Some ( response) )
282
- } ,
283
-
284
- _ => (
285
- Err ( APIError :: APIMisuseError {
286
- err : format ! (
287
- "No pending buy request for request_id: {:?}" ,
288
- request_id
289
- ) ,
290
- } ) ,
291
- None ,
292
- ) ,
293
- }
294
- } ,
295
- None => (
296
- Err ( APIError :: APIMisuseError {
297
- err : format ! (
298
- "No state for the counterparty exists: {:?}" ,
299
- counterparty_node_id
300
- ) ,
301
- } ) ,
302
- None ,
303
- ) ,
304
- }
305
- } ;
257
+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
306
258
307
- if let Some ( response) = response {
308
- let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
309
- self . pending_messages . enqueue ( counterparty_node_id, msg) ;
310
- }
259
+ let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
260
+ match outer_state_lock. get ( counterparty_node_id) {
261
+ Some ( inner_state_lock) => {
262
+ let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
263
+
264
+ match peer_state_lock. pending_requests . remove ( & request_id) {
265
+ Some ( LSPS1Request :: CreateOrder ( params) ) => {
266
+ let order_id = self . generate_order_id ( ) ;
267
+ let channel = OutboundCRChannel :: new (
268
+ params. order . clone ( ) ,
269
+ created_at. clone ( ) ,
270
+ order_id. clone ( ) ,
271
+ payment. clone ( ) ,
272
+ ) ;
273
+
274
+ peer_state_lock. insert_outbound_channel ( order_id. clone ( ) , channel) ;
275
+
276
+ let response = LSPS1Response :: CreateOrder ( LSPS1CreateOrderResponse {
277
+ order : params. order ,
278
+ order_id,
279
+ order_state : LSPS1OrderState :: Created ,
280
+ created_at,
281
+ payment,
282
+ channel : None ,
283
+ } ) ;
284
+ let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
285
+ message_queue_notifier. enqueue ( counterparty_node_id, msg) ;
286
+ Ok ( ( ) )
287
+ } ,
311
288
312
- result
289
+ _ => Err ( APIError :: APIMisuseError {
290
+ err : format ! ( "No pending buy request for request_id: {:?}" , request_id) ,
291
+ } ) ,
292
+ }
293
+ } ,
294
+ None => Err ( APIError :: APIMisuseError {
295
+ err : format ! ( "No state for the counterparty exists: {:?}" , counterparty_node_id) ,
296
+ } ) ,
297
+ }
313
298
}
314
299
315
300
fn handle_get_order_request (
@@ -376,54 +361,40 @@ where
376
361
& self , request_id : LSPSRequestId , counterparty_node_id : PublicKey , order_id : LSPS1OrderId ,
377
362
order_state : LSPS1OrderState , channel : Option < LSPS1ChannelInfo > ,
378
363
) -> Result < ( ) , APIError > {
379
- let ( result, response) = {
380
- let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
364
+ let mut message_queue_notifier = self . pending_messages . notifier ( ) ;
381
365
382
- match outer_state_lock. get ( & counterparty_node_id) {
383
- Some ( inner_state_lock) => {
384
- let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
366
+ let outer_state_lock = self . per_peer_state . read ( ) . unwrap ( ) ;
385
367
386
- if let Some ( outbound_channel) =
387
- peer_state_lock. outbound_channels_by_order_id . get_mut ( & order_id)
388
- {
389
- let config = & outbound_channel. config ;
368
+ match outer_state_lock. get ( & counterparty_node_id) {
369
+ Some ( inner_state_lock) => {
370
+ let mut peer_state_lock = inner_state_lock. lock ( ) . unwrap ( ) ;
390
371
391
- let response = LSPS1Response :: GetOrder ( LSPS1CreateOrderResponse {
392
- order_id,
393
- order : config. order . clone ( ) ,
394
- order_state,
395
- created_at : config. created_at . clone ( ) ,
396
- payment : config. payment . clone ( ) ,
397
- channel,
398
- } ) ;
399
- ( Ok ( ( ) ) , Some ( response) )
400
- } else {
401
- (
402
- Err ( APIError :: APIMisuseError {
403
- err : format ! ( "Channel with order_id {} not found" , order_id. 0 ) ,
404
- } ) ,
405
- None ,
406
- )
407
- }
408
- } ,
409
- None => (
372
+ if let Some ( outbound_channel) =
373
+ peer_state_lock. outbound_channels_by_order_id . get_mut ( & order_id)
374
+ {
375
+ let config = & outbound_channel. config ;
376
+
377
+ let response = LSPS1Response :: GetOrder ( LSPS1CreateOrderResponse {
378
+ order_id,
379
+ order : config. order . clone ( ) ,
380
+ order_state,
381
+ created_at : config. created_at . clone ( ) ,
382
+ payment : config. payment . clone ( ) ,
383
+ channel,
384
+ } ) ;
385
+ let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
386
+ message_queue_notifier. enqueue ( & counterparty_node_id, msg) ;
387
+ Ok ( ( ) )
388
+ } else {
410
389
Err ( APIError :: APIMisuseError {
411
- err : format ! (
412
- "No existing state with counterparty {}" ,
413
- counterparty_node_id
414
- ) ,
415
- } ) ,
416
- None ,
417
- ) ,
418
- }
419
- } ;
420
-
421
- if let Some ( response) = response {
422
- let msg = LSPS1Message :: Response ( request_id, response) . into ( ) ;
423
- self . pending_messages . enqueue ( & counterparty_node_id, msg) ;
390
+ err : format ! ( "Channel with order_id {} not found" , order_id. 0 ) ,
391
+ } )
392
+ }
393
+ } ,
394
+ None => Err ( APIError :: APIMisuseError {
395
+ err : format ! ( "No existing state with counterparty {}" , counterparty_node_id) ,
396
+ } ) ,
424
397
}
425
-
426
- result
427
398
}
428
399
429
400
fn generate_order_id ( & self ) -> LSPS1OrderId {
0 commit comments