Skip to content

Commit 2d39edc

Browse files
committed
Move Arc<Node> to Context.
It will become easier to support multiple members in Context. In future commits, we will add PaginatedKvStore to Context.
1 parent b16dc89 commit 2d39edc

15 files changed

+108
-96
lines changed

ldk-server/src/api/bolt11_receive.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
use ldk_node::Node;
1+
use crate::service::Context;
22
use ldk_server_protos::api::{Bolt11ReceiveRequest, Bolt11ReceiveResponse};
3-
use std::sync::Arc;
43

54
pub(crate) const BOLT11_RECEIVE_PATH: &str = "Bolt11Receive";
65

76
pub(crate) fn handle_bolt11_receive_request(
8-
node: Arc<Node>, request: Bolt11ReceiveRequest,
7+
context: Context, request: Bolt11ReceiveRequest,
98
) -> Result<Bolt11ReceiveResponse, ldk_node::NodeError> {
109
let invoice = match request.amount_msat {
11-
Some(amount_msat) => {
12-
node.bolt11_payment().receive(amount_msat, &request.description, request.expiry_secs)?
13-
},
14-
None => node
10+
Some(amount_msat) => context.node.bolt11_payment().receive(
11+
amount_msat,
12+
&request.description,
13+
request.expiry_secs,
14+
)?,
15+
None => context
16+
.node
1517
.bolt11_payment()
1618
.receive_variable_amount(&request.description, request.expiry_secs)?,
1719
};

ldk-server/src/api/bolt11_send.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1+
use crate::service::Context;
12
use bytes::Bytes;
23
use ldk_node::lightning_invoice::Bolt11Invoice;
3-
use ldk_node::Node;
44
use ldk_server_protos::api::{Bolt11SendRequest, Bolt11SendResponse};
55
use std::str::FromStr;
6-
use std::sync::Arc;
76

87
pub(crate) const BOLT11_SEND_PATH: &str = "Bolt11Send";
98

109
pub(crate) fn handle_bolt11_send_request(
11-
node: Arc<Node>, request: Bolt11SendRequest,
10+
context: Context, request: Bolt11SendRequest,
1211
) -> Result<Bolt11SendResponse, ldk_node::NodeError> {
1312
let invoice = Bolt11Invoice::from_str(&request.invoice.as_str())
1413
.map_err(|_| ldk_node::NodeError::InvalidInvoice)?;
1514

1615
let payment_id = match request.amount_msat {
17-
None => node.bolt11_payment().send(&invoice, None),
18-
Some(amount_msat) => node.bolt11_payment().send_using_amount(&invoice, amount_msat, None),
16+
None => context.node.bolt11_payment().send(&invoice, None),
17+
Some(amount_msat) => {
18+
context.node.bolt11_payment().send_using_amount(&invoice, amount_msat, None)
19+
},
1920
}?;
2021

2122
let response = Bolt11SendResponse { payment_id: Bytes::from(payment_id.0.to_vec()) };

ldk-server/src/api/bolt12_receive.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
use ldk_node::Node;
1+
use crate::service::Context;
22
use ldk_server_protos::api::{Bolt12ReceiveRequest, Bolt12ReceiveResponse};
3-
use std::sync::Arc;
43

54
pub(crate) const BOLT12_RECEIVE_PATH: &str = "Bolt12Receive";
65

76
pub(crate) fn handle_bolt12_receive_request(
8-
node: Arc<Node>, request: Bolt12ReceiveRequest,
7+
context: Context, request: Bolt12ReceiveRequest,
98
) -> Result<Bolt12ReceiveResponse, ldk_node::NodeError> {
109
let offer = match request.amount_msat {
11-
Some(amount_msat) => node.bolt12_payment().receive(
10+
Some(amount_msat) => context.node.bolt12_payment().receive(
1211
amount_msat,
1312
&request.description,
1413
request.expiry_secs,
1514
request.quantity,
1615
)?,
17-
None => node
16+
None => context
17+
.node
1818
.bolt12_payment()
1919
.receive_variable_amount(&request.description, request.expiry_secs)?,
2020
};

ldk-server/src/api/bolt12_send.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1+
use crate::service::Context;
12
use bytes::Bytes;
23
use ldk_node::lightning::offers::offer::Offer;
3-
use ldk_node::Node;
44
use ldk_server_protos::api::{Bolt12SendRequest, Bolt12SendResponse};
55
use std::str::FromStr;
6-
use std::sync::Arc;
76

87
pub(crate) const BOLT12_SEND_PATH: &str = "Bolt12Send";
98

109
pub(crate) fn handle_bolt12_send_request(
11-
node: Arc<Node>, request: Bolt12SendRequest,
10+
context: Context, request: Bolt12SendRequest,
1211
) -> Result<Bolt12SendResponse, ldk_node::NodeError> {
1312
let offer =
1413
Offer::from_str(&request.offer.as_str()).map_err(|_| ldk_node::NodeError::InvalidOffer)?;
1514

1615
let payment_id = match request.amount_msat {
17-
None => node.bolt12_payment().send(&offer, request.quantity, request.payer_note),
18-
Some(amount_msat) => node.bolt12_payment().send_using_amount(
16+
None => context.node.bolt12_payment().send(&offer, request.quantity, request.payer_note),
17+
Some(amount_msat) => context.node.bolt12_payment().send_using_amount(
1918
&offer,
2019
amount_msat,
2120
request.quantity,

ldk-server/src/api/close_channel.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
use crate::service::Context;
12
use ldk_node::bitcoin::secp256k1::PublicKey;
2-
use ldk_node::{Node, UserChannelId};
3+
use ldk_node::UserChannelId;
34
use ldk_server_protos::api::{CloseChannelRequest, CloseChannelResponse};
45
use std::str::FromStr;
5-
use std::sync::Arc;
66

77
pub(crate) const CLOSE_CHANNEL_PATH: &str = "CloseChannel";
88

99
pub(crate) fn handle_close_channel_request(
10-
node: Arc<Node>, request: CloseChannelRequest,
10+
context: Context, request: CloseChannelRequest,
1111
) -> Result<CloseChannelResponse, ldk_node::NodeError> {
1212
//TODO: Should this be string?
1313
let mut user_channel_id_bytes = [0u8; 16];
@@ -17,12 +17,12 @@ pub(crate) fn handle_close_channel_request(
1717
.map_err(|_| ldk_node::NodeError::InvalidPublicKey)?;
1818

1919
match request.force_close {
20-
Some(true) => node.force_close_channel(
20+
Some(true) => context.node.force_close_channel(
2121
&user_channel_id,
2222
counterparty_node_id,
2323
request.force_close_reason,
2424
)?,
25-
_ => node.close_channel(&user_channel_id, counterparty_node_id)?,
25+
_ => context.node.close_channel(&user_channel_id, counterparty_node_id)?,
2626
};
2727

2828
let response = CloseChannelResponse {};

ldk-server/src/api/get_balances.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1+
use crate::service::Context;
12
use crate::util::proto_adapter::{lightning_balance_to_proto, pending_sweep_balance_to_proto};
2-
use ldk_node::Node;
33
use ldk_server_protos::api::{GetBalancesRequest, GetBalancesResponse};
4-
use std::sync::Arc;
54

65
pub(crate) const GET_BALANCES: &str = "GetBalances";
76

87
pub(crate) fn handle_get_balances_request(
9-
node: Arc<Node>, _request: GetBalancesRequest,
8+
context: Context, _request: GetBalancesRequest,
109
) -> Result<GetBalancesResponse, ldk_node::NodeError> {
11-
let balance_details = node.list_balances();
10+
let balance_details = context.node.list_balances();
1211

1312
let response = GetBalancesResponse {
1413
total_onchain_balance_sats: balance_details.total_onchain_balance_sats,

ldk-server/src/api/get_node_info.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
use ldk_node::Node;
1+
use crate::service::Context;
22
use ldk_server_protos::api::{GetNodeInfoRequest, GetNodeInfoResponse};
33
use ldk_server_protos::types::BestBlock;
4-
use std::sync::Arc;
54

65
pub(crate) const GET_NODE_INFO: &str = "GetNodeInfo";
76

87
pub(crate) fn handle_get_node_info_request(
9-
node: Arc<Node>, _request: GetNodeInfoRequest,
8+
context: Context, _request: GetNodeInfoRequest,
109
) -> Result<GetNodeInfoResponse, ldk_node::NodeError> {
11-
let node_status = node.status();
10+
let node_status = context.node.status();
1211

1312
let best_block = BestBlock {
1413
block_hash: node_status.current_best_block.block_hash.to_string(),
1514
height: node_status.current_best_block.height,
1615
};
1716

1817
let response = GetNodeInfoResponse {
19-
node_id: node.node_id().to_string(),
18+
node_id: context.node.node_id().to_string(),
2019
current_best_block: Some(best_block),
2120
latest_lightning_wallet_sync_timestamp: node_status.latest_lightning_wallet_sync_timestamp,
2221
latest_onchain_wallet_sync_timestamp: node_status.latest_onchain_wallet_sync_timestamp,

ldk-server/src/api/get_payment_details.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1+
use crate::service::Context;
12
use crate::util::proto_adapter::payment_to_proto;
23
use hex::FromHex;
34
use ldk_node::lightning::ln::channelmanager::PaymentId;
4-
use ldk_node::Node;
55
use ldk_server_protos::api::{GetPaymentDetailsRequest, GetPaymentDetailsResponse};
6-
use std::sync::Arc;
76

87
pub(crate) const GET_PAYMENT_DETAILS_PATH: &str = "GetPaymentDetails";
98

109
pub(crate) fn handle_get_payment_details_request(
11-
node: Arc<Node>, request: GetPaymentDetailsRequest,
10+
context: Context, request: GetPaymentDetailsRequest,
1211
) -> Result<GetPaymentDetailsResponse, ldk_node::NodeError> {
1312
let payment_id_bytes = <[u8; PaymentId::LENGTH]>::from_hex(&request.payment_id)
1413
.map_err(|_| ldk_node::NodeError::InvalidPaymentId)?;
1514

16-
let payment_details = node.payment(&PaymentId(payment_id_bytes));
15+
let payment_details = context.node.payment(&PaymentId(payment_id_bytes));
1716

1817
let response = GetPaymentDetailsResponse {
1918
payment: payment_details.map(|payment| payment_to_proto(payment)),

ldk-server/src/api/list_channels.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1+
use crate::service::Context;
12
use crate::util::proto_adapter::channel_to_proto;
2-
use ldk_node::Node;
33
use ldk_server_protos::api::{ListChannelsRequest, ListChannelsResponse};
4-
use std::sync::Arc;
54

65
pub(crate) const LIST_CHANNELS_PATH: &str = "ListChannels";
76

87
pub(crate) fn handle_list_channels_request(
9-
node: Arc<Node>, _request: ListChannelsRequest,
8+
context: Context, _request: ListChannelsRequest,
109
) -> Result<ListChannelsResponse, ldk_node::NodeError> {
11-
let channels = node.list_channels().into_iter().map(|c| channel_to_proto(c)).collect();
10+
let channels = context.node.list_channels().into_iter().map(|c| channel_to_proto(c)).collect();
1211

1312
let response = ListChannelsResponse { channels };
1413
Ok(response)

ldk-server/src/api/list_payments.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1+
use crate::service::Context;
12
use crate::util::proto_adapter::payment_to_proto;
2-
use ldk_node::Node;
33
use ldk_server_protos::api::{ListPaymentsRequest, ListPaymentsResponse};
4-
use std::sync::Arc;
54

65
pub(crate) const LIST_PAYMENTS_PATH: &str = "ListPayments";
76

87
pub(crate) fn handle_list_payments_request(
9-
node: Arc<Node>, _request: ListPaymentsRequest,
8+
context: Context, _request: ListPaymentsRequest,
109
) -> Result<ListPaymentsResponse, ldk_node::NodeError> {
11-
let payments = node.list_payments().into_iter().map(|p| payment_to_proto(p)).collect();
10+
let payments = context.node.list_payments().into_iter().map(|p| payment_to_proto(p)).collect();
1211

1312
let response = ListPaymentsResponse { payments };
1413
Ok(response)

0 commit comments

Comments
 (0)