Skip to content

Commit 9e6ae51

Browse files
committed
Move LSPS2 client event handling into liquidity/client/lsps2.rs
1 parent 6859fbe commit 9e6ae51

2 files changed

Lines changed: 107 additions & 102 deletions

File tree

src/liquidity/client/lsps2.rs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use lightning::util::ser::Writeable;
1818
use lightning_invoice::{Bolt11Invoice, Bolt11InvoiceDescription, InvoiceBuilder, RoutingFees};
1919
use lightning_liquidity::lsps0::ser::LSPSRequestId;
2020
use lightning_liquidity::lsps2::client::LSPS2ClientConfig as LdkLSPS2ClientConfig;
21+
use lightning_liquidity::lsps2::event::LSPS2ClientEvent;
2122
use lightning_liquidity::lsps2::msgs::LSPS2OpeningFeeParams;
2223
use lightning_liquidity::lsps2::utils::compute_opening_fee;
2324
use lightning_types::payment::PaymentHash;
@@ -41,6 +42,107 @@ pub(crate) struct LSPS2Client {
4142
Mutex<HashMap<LSPSRequestId, oneshot::Sender<LSPS2BuyResponse>>>,
4243
}
4344

45+
impl LSPS2Client {
46+
pub(crate) async fn handle_event<L: Deref>(&self, event: LSPS2ClientEvent, logger: &L)
47+
where
48+
L::Target: LdkLogger,
49+
{
50+
match event {
51+
LSPS2ClientEvent::OpeningParametersReady {
52+
request_id,
53+
counterparty_node_id,
54+
opening_fee_params_menu,
55+
} => {
56+
if counterparty_node_id != self.lsp_node_id {
57+
debug_assert!(
58+
false,
59+
"Received response from unexpected LSP counterparty. This should never happen."
60+
);
61+
log_error!(
62+
logger,
63+
"Received response from unexpected LSP counterparty. This should never happen."
64+
);
65+
return;
66+
}
67+
68+
if let Some(sender) =
69+
self.pending_fee_requests.lock().expect("lock").remove(&request_id)
70+
{
71+
let response = LSPS2FeeResponse { opening_fee_params_menu };
72+
73+
match sender.send(response) {
74+
Ok(()) => (),
75+
Err(_) => {
76+
log_error!(
77+
logger,
78+
"Failed to handle response for request {:?} from liquidity service",
79+
request_id
80+
);
81+
},
82+
}
83+
} else {
84+
debug_assert!(
85+
false,
86+
"Received response from liquidity service for unknown request."
87+
);
88+
log_error!(
89+
logger,
90+
"Received response from liquidity service for unknown request."
91+
);
92+
}
93+
},
94+
LSPS2ClientEvent::InvoiceParametersReady {
95+
request_id,
96+
counterparty_node_id,
97+
intercept_scid,
98+
cltv_expiry_delta,
99+
..
100+
} => {
101+
if counterparty_node_id != self.lsp_node_id {
102+
debug_assert!(
103+
false,
104+
"Received response from unexpected LSP counterparty. This should never happen."
105+
);
106+
log_error!(
107+
logger,
108+
"Received response from unexpected LSP counterparty. This should never happen."
109+
);
110+
return;
111+
}
112+
113+
if let Some(sender) =
114+
self.pending_buy_requests.lock().expect("lock").remove(&request_id)
115+
{
116+
let response = LSPS2BuyResponse { intercept_scid, cltv_expiry_delta };
117+
118+
match sender.send(response) {
119+
Ok(()) => (),
120+
Err(_) => {
121+
log_error!(
122+
logger,
123+
"Failed to handle response for request {:?} from liquidity service",
124+
request_id
125+
);
126+
},
127+
}
128+
} else {
129+
debug_assert!(
130+
false,
131+
"Received response from liquidity service for unknown request."
132+
);
133+
log_error!(
134+
logger,
135+
"Received response from liquidity service for unknown request."
136+
);
137+
}
138+
},
139+
_ => {
140+
log_error!(logger, "Received unexpected LSPS2Client liquidity event!");
141+
},
142+
}
143+
}
144+
}
145+
44146
#[derive(Debug, Clone)]
45147
pub(crate) struct LSPS2ClientConfig {
46148
pub node_id: PublicKey,

src/liquidity/mod.rs

Lines changed: 5 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use lightning_liquidity::events::LiquidityEvent;
2626
use lightning_liquidity::lsps0::ser::LSPSDateTime;
2727
use lightning_liquidity::lsps1::client::LSPS1ClientConfig as LdkLSPS1ClientConfig;
2828
use lightning_liquidity::lsps2::client::LSPS2ClientConfig as LdkLSPS2ClientConfig;
29-
use lightning_liquidity::lsps2::event::{LSPS2ClientEvent, LSPS2ServiceEvent};
29+
use lightning_liquidity::lsps2::event::LSPS2ServiceEvent;
3030
use lightning_liquidity::lsps2::msgs::LSPS2RawOpeningFeeParams;
3131
use lightning_liquidity::lsps2::service::LSPS2ServiceConfig as LdkLSPS2ServiceConfig;
3232
use lightning_liquidity::{LiquidityClientConfig, LiquidityServiceConfig};
@@ -41,9 +41,7 @@ use crate::{total_anchor_channels_reserve_sats, Config};
4141

4242
pub(crate) use client::lsps1::{LSPS1Client, LSPS1ClientConfig};
4343
pub use client::lsps1::{LSPS1Liquidity, LSPS1OrderStatus};
44-
pub(crate) use client::lsps2::{
45-
LSPS2BuyResponse, LSPS2Client, LSPS2ClientConfig, LSPS2FeeResponse,
46-
};
44+
pub(crate) use client::lsps2::{LSPS2Client, LSPS2ClientConfig};
4745

4846
pub(crate) const LIQUIDITY_REQUEST_TIMEOUT_SECS: u64 = 5;
4947

@@ -631,106 +629,11 @@ where
631629
},
632630
}
633631
},
634-
LiquidityEvent::LSPS2Client(LSPS2ClientEvent::OpeningParametersReady {
635-
request_id,
636-
counterparty_node_id,
637-
opening_fee_params_menu,
638-
}) => {
632+
LiquidityEvent::LSPS2Client(event) => {
639633
if let Some(lsps2_client) = self.lsps2_client.as_ref() {
640-
if counterparty_node_id != lsps2_client.lsp_node_id {
641-
debug_assert!(
642-
false,
643-
"Received response from unexpected LSP counterparty. This should never happen."
644-
);
645-
log_error!(
646-
self.logger,
647-
"Received response from unexpected LSP counterparty. This should never happen."
648-
);
649-
return;
650-
}
651-
652-
if let Some(sender) =
653-
lsps2_client.pending_fee_requests.lock().expect("lock").remove(&request_id)
654-
{
655-
let response = LSPS2FeeResponse { opening_fee_params_menu };
656-
657-
match sender.send(response) {
658-
Ok(()) => (),
659-
Err(_) => {
660-
log_error!(
661-
self.logger,
662-
"Failed to handle response for request {:?} from liquidity service",
663-
request_id
664-
);
665-
},
666-
}
667-
} else {
668-
debug_assert!(
669-
false,
670-
"Received response from liquidity service for unknown request."
671-
);
672-
log_error!(
673-
self.logger,
674-
"Received response from liquidity service for unknown request."
675-
);
676-
}
634+
lsps2_client.handle_event(event, &self.logger).await;
677635
} else {
678-
log_error!(
679-
self.logger,
680-
"Received unexpected LSPS2Client::OpeningParametersReady event!"
681-
);
682-
}
683-
},
684-
LiquidityEvent::LSPS2Client(LSPS2ClientEvent::InvoiceParametersReady {
685-
request_id,
686-
counterparty_node_id,
687-
intercept_scid,
688-
cltv_expiry_delta,
689-
..
690-
}) => {
691-
if let Some(lsps2_client) = self.lsps2_client.as_ref() {
692-
if counterparty_node_id != lsps2_client.lsp_node_id {
693-
debug_assert!(
694-
false,
695-
"Received response from unexpected LSP counterparty. This should never happen."
696-
);
697-
log_error!(
698-
self.logger,
699-
"Received response from unexpected LSP counterparty. This should never happen."
700-
);
701-
return;
702-
}
703-
704-
if let Some(sender) =
705-
lsps2_client.pending_buy_requests.lock().expect("lock").remove(&request_id)
706-
{
707-
let response = LSPS2BuyResponse { intercept_scid, cltv_expiry_delta };
708-
709-
match sender.send(response) {
710-
Ok(()) => (),
711-
Err(_) => {
712-
log_error!(
713-
self.logger,
714-
"Failed to handle response for request {:?} from liquidity service",
715-
request_id
716-
);
717-
},
718-
}
719-
} else {
720-
debug_assert!(
721-
false,
722-
"Received response from liquidity service for unknown request."
723-
);
724-
log_error!(
725-
self.logger,
726-
"Received response from liquidity service for unknown request."
727-
);
728-
}
729-
} else {
730-
log_error!(
731-
self.logger,
732-
"Received unexpected LSPS2Client::InvoiceParametersReady event!"
733-
);
636+
log_error!(self.logger, "Received unexpected LSPS2Client event!");
734637
}
735638
},
736639
e => {

0 commit comments

Comments
 (0)