Skip to content

Commit 0a6010e

Browse files
committed
Give Wallet access to EventQueue
Let wallet sync enqueue on-chain payment events directly. Co-Authored-By: HAL 9000
1 parent 45b6833 commit 0a6010e

2 files changed

Lines changed: 22 additions & 18 deletions

File tree

src/builder.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1440,8 +1440,8 @@ fn build_with_store_internal(
14401440

14411441
let kv_store_ref = Arc::clone(&kv_store);
14421442
let logger_ref = Arc::clone(&logger);
1443-
let (payment_store_res, node_metris_res, pending_payment_store_res) =
1444-
runtime.block_on(async move {
1443+
let (payment_store_res, node_metris_res, pending_payment_store_res, event_queue_res) = runtime
1444+
.block_on(async move {
14451445
tokio::join!(
14461446
read_all_objects(
14471447
&*kv_store_ref,
@@ -1455,7 +1455,8 @@ fn build_with_store_internal(
14551455
PENDING_PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE,
14561456
PENDING_PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE,
14571457
Arc::clone(&logger_ref),
1458-
)
1458+
),
1459+
read_event_queue(Arc::clone(&kv_store_ref), Arc::clone(&logger_ref)),
14591460
)
14601461
});
14611462

@@ -1742,6 +1743,18 @@ fn build_with_store_internal(
17421743
},
17431744
};
17441745

1746+
let event_queue = match event_queue_res {
1747+
Ok(event_queue) => Arc::new(event_queue),
1748+
Err(e) => {
1749+
if e.kind() == std::io::ErrorKind::NotFound {
1750+
Arc::new(EventQueue::new(Arc::clone(&kv_store), Arc::clone(&logger)))
1751+
} else {
1752+
log_error!(logger, "Failed to read event queue from store: {}", e);
1753+
return Err(BuildError::ReadFailed);
1754+
}
1755+
},
1756+
};
1757+
17451758
let wallet = Arc::new(Wallet::new(
17461759
bdk_wallet,
17471760
wallet_persister,
@@ -1751,6 +1764,7 @@ fn build_with_store_internal(
17511764
Arc::clone(&payment_store),
17521765
Arc::clone(&runtime),
17531766
Arc::clone(&config),
1767+
Arc::clone(&event_queue),
17541768
Arc::clone(&logger),
17551769
Arc::clone(&pending_payment_store),
17561770
));
@@ -1853,7 +1867,6 @@ fn build_with_store_internal(
18531867
external_scores_res,
18541868
channel_manager_bytes_res,
18551869
sweeper_bytes_res,
1856-
event_queue_res,
18571870
peer_info_res,
18581871
) = runtime.block_on(async move {
18591872
tokio::join!(
@@ -1866,7 +1879,6 @@ fn build_with_store_internal(
18661879
CHANNEL_MANAGER_PERSISTENCE_KEY,
18671880
),
18681881
output_sweeper_future,
1869-
read_event_queue(Arc::clone(&kv_store_ref), Arc::clone(&logger_ref)),
18701882
read_peer_info(Arc::clone(&kv_store_ref), Arc::clone(&logger_ref)),
18711883
)
18721884
});
@@ -2212,18 +2224,6 @@ fn build_with_store_internal(
22122224
},
22132225
};
22142226

2215-
let event_queue = match event_queue_res {
2216-
Ok(event_queue) => Arc::new(event_queue),
2217-
Err(e) => {
2218-
if e.kind() == std::io::ErrorKind::NotFound {
2219-
Arc::new(EventQueue::new(Arc::clone(&kv_store), Arc::clone(&logger)))
2220-
} else {
2221-
log_error!(logger, "Failed to read event queue from store: {}", e);
2222-
return Err(BuildError::ReadFailed);
2223-
}
2224-
},
2225-
};
2226-
22272227
let peer_store = match peer_info_res {
22282228
Ok(peer_store) => Arc::new(peer_store),
22292229
Err(e) => {

src/wallet/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ use lightning_invoice::RawBolt11Invoice;
5454
use persist::KVStoreWalletPersister;
5555

5656
use crate::config::Config;
57+
use crate::event::EventQueue;
5758
use crate::fee_estimator::{ConfirmationTarget, FeeEstimator, OnchainFeeEstimator};
5859
use crate::logger::{log_debug, log_error, log_info, log_trace, LdkLogger, Logger};
5960
use crate::payment::store::ConfirmationStatus;
@@ -91,6 +92,7 @@ pub(crate) struct Wallet {
9192
payment_store: Arc<PaymentStore>,
9293
runtime: Arc<Runtime>,
9394
config: Arc<Config>,
95+
event_queue: Arc<EventQueue<Arc<Logger>>>,
9496
logger: Arc<Logger>,
9597
pending_payment_store: Arc<PendingPaymentStore>,
9698
}
@@ -101,7 +103,8 @@ impl Wallet {
101103
wallet_persister: KVStoreWalletPersister, broadcaster: Arc<Broadcaster>,
102104
fee_estimator: Arc<OnchainFeeEstimator>, chain_source: Arc<ChainSource>,
103105
payment_store: Arc<PaymentStore>, runtime: Arc<Runtime>, config: Arc<Config>,
104-
logger: Arc<Logger>, pending_payment_store: Arc<PendingPaymentStore>,
106+
event_queue: Arc<EventQueue<Arc<Logger>>>, logger: Arc<Logger>,
107+
pending_payment_store: Arc<PendingPaymentStore>,
105108
) -> Self {
106109
let inner = Mutex::new(wallet);
107110
let persister = Mutex::new(wallet_persister);
@@ -114,6 +117,7 @@ impl Wallet {
114117
payment_store,
115118
runtime,
116119
config,
120+
event_queue,
117121
logger,
118122
pending_payment_store,
119123
}

0 commit comments

Comments
 (0)