Skip to content

Commit a570108

Browse files
committed
Have Wallet take EventQueue and ChannelManager refs
1 parent 306a78e commit a570108

File tree

2 files changed

+34
-14
lines changed

2 files changed

+34
-14
lines changed

src/builder.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -792,12 +792,25 @@ fn build_with_store_internal(
792792
},
793793
};
794794

795+
let event_queue = match io::utils::read_event_queue(Arc::clone(&kv_store), Arc::clone(&logger))
796+
{
797+
Ok(event_queue) => Arc::new(event_queue),
798+
Err(e) => {
799+
if e.kind() == std::io::ErrorKind::NotFound {
800+
Arc::new(EventQueue::new(Arc::clone(&kv_store), Arc::clone(&logger)))
801+
} else {
802+
return Err(BuildError::ReadFailed);
803+
}
804+
},
805+
};
806+
795807
let wallet = Arc::new(Wallet::new(
796808
bdk_wallet,
797809
wallet_persister,
798810
Arc::clone(&tx_broadcaster),
799811
Arc::clone(&fee_estimator),
800812
Arc::clone(&payment_store),
813+
Arc::clone(&event_queue),
801814
Arc::clone(&logger),
802815
));
803816

@@ -1006,6 +1019,7 @@ fn build_with_store_internal(
10061019
};
10071020

10081021
let channel_manager = Arc::new(channel_manager);
1022+
wallet.set_channel_manager(Arc::clone(&channel_manager));
10091023

10101024
// Give ChannelMonitors to ChainMonitor
10111025
for (_blockhash, channel_monitor) in channel_monitors.into_iter() {
@@ -1187,18 +1201,6 @@ fn build_with_store_internal(
11871201
},
11881202
}
11891203

1190-
let event_queue = match io::utils::read_event_queue(Arc::clone(&kv_store), Arc::clone(&logger))
1191-
{
1192-
Ok(event_queue) => Arc::new(event_queue),
1193-
Err(e) => {
1194-
if e.kind() == std::io::ErrorKind::NotFound {
1195-
Arc::new(EventQueue::new(Arc::clone(&kv_store), Arc::clone(&logger)))
1196-
} else {
1197-
return Err(BuildError::ReadFailed);
1198-
}
1199-
},
1200-
};
1201-
12021204
let peer_store = match io::utils::read_peer_info(Arc::clone(&kv_store), Arc::clone(&logger)) {
12031205
Ok(peer_store) => Arc::new(peer_store),
12041206
Err(e) => {

src/wallet/mod.rs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ use persist::KVStoreWalletPersister;
99

1010
use crate::logger::{log_debug, log_error, log_info, log_trace, FilesystemLogger, Logger};
1111

12+
use crate::event::EventQueue;
1213
use crate::fee_estimator::{ConfirmationTarget, FeeEstimator};
1314
use crate::payment::store::{ConfirmationStatus, PaymentStore};
1415
use crate::payment::{PaymentDetails, PaymentDirection, PaymentStatus};
16+
use crate::types::ChannelManager;
1517
use crate::Error;
1618

1719
use lightning::chain::chaininterface::BroadcasterInterface;
@@ -68,9 +70,11 @@ where
6870
// A BDK on-chain wallet.
6971
inner: Mutex<PersistedWallet<KVStoreWalletPersister>>,
7072
persister: Mutex<KVStoreWalletPersister>,
73+
channel_manager: Mutex<Option<Arc<ChannelManager>>>,
7174
broadcaster: B,
7275
fee_estimator: E,
7376
payment_store: Arc<PaymentStore<Arc<FilesystemLogger>>>,
77+
event_queue: Arc<EventQueue<Arc<FilesystemLogger>>>,
7478
logger: L,
7579
}
7680

@@ -83,13 +87,27 @@ where
8387
pub(crate) fn new(
8488
wallet: bdk_wallet::PersistedWallet<KVStoreWalletPersister>,
8589
wallet_persister: KVStoreWalletPersister, broadcaster: B, fee_estimator: E,
86-
payment_store: Arc<PaymentStore<Arc<FilesystemLogger>>>, logger: L,
90+
payment_store: Arc<PaymentStore<Arc<FilesystemLogger>>>,
91+
event_queue: Arc<EventQueue<Arc<FilesystemLogger>>>, logger: L,
8792
) -> Self {
8893
let inner = Mutex::new(wallet);
8994
let persister = Mutex::new(wallet_persister);
90-
Self { inner, persister, broadcaster, fee_estimator, payment_store, logger }
95+
let channel_manager = Mutex::new(None);
96+
Self {
97+
inner,
98+
persister,
99+
channel_manager,
100+
broadcaster,
101+
fee_estimator,
102+
payment_store,
103+
event_queue,
104+
logger,
105+
}
91106
}
92107

108+
pub(crate) fn set_channel_manager(&self, channel_manager: Arc<ChannelManager>) {
109+
*self.channel_manager.lock().unwrap() = Some(channel_manager);
110+
}
93111
pub(crate) fn get_full_scan_request(&self) -> FullScanRequest<KeychainKind> {
94112
self.inner.lock().unwrap().start_full_scan().build()
95113
}

0 commit comments

Comments
 (0)