Skip to content

Commit 88787dc

Browse files
committed
wip
1 parent 969574f commit 88787dc

File tree

2 files changed

+91
-1
lines changed

2 files changed

+91
-1
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ where
375375
where
376376
H::Target: EventHandler,
377377
{
378-
self.0.process_pending_events(handler);
378+
self.0.process_pending_events(handler)
379379
}
380380
}
381381

lightning/src/util/persist.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,16 @@ where
233233
}
234234
}
235235

236+
impl<K: Deref> Deref for KVStoreSyncWrapper<K>
237+
where
238+
K::Target: KVStoreSync,
239+
{
240+
type Target = Self;
241+
fn deref(&self) -> &Self {
242+
self
243+
}
244+
}
245+
236246
impl<K: Deref> KVStore for KVStoreSyncWrapper<K>
237247
where
238248
K::Target: KVStoreSync,
@@ -663,6 +673,86 @@ where
663673
state: Arc<MonitorUpdatingPersisterState<K, L, ES, SP, BI, FE>>,
664674
}
665675

676+
impl<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
677+
MonitorUpdatingPersister<K, L, ES, SP, BI, FE>
678+
where
679+
K::Target: KVStore,
680+
L::Target: Logger,
681+
ES::Target: EntropySource + Sized,
682+
SP::Target: SignerProvider + Sized,
683+
BI::Target: BroadcasterInterface,
684+
FE::Target: FeeEstimator,
685+
{
686+
pub fn new(
687+
kv_store: K, logger: L, maximum_pending_updates: u64, entropy_source: ES,
688+
signer_provider: SP, broadcaster: BI, fee_estimator: FE,
689+
) -> Self {
690+
let state = MonitorUpdatingPersisterState::new(
691+
kv_store,
692+
logger,
693+
maximum_pending_updates,
694+
entropy_source,
695+
signer_provider,
696+
broadcaster,
697+
fee_estimator,
698+
);
699+
Self { state: Arc::new(state) }
700+
}
701+
702+
pub async fn read_all_channel_monitors_with_updates(
703+
&self,
704+
) -> Result<
705+
Vec<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>)>,
706+
io::Error,
707+
> {
708+
self.state.read_all_channel_monitors_with_updates().await
709+
}
710+
}
711+
712+
pub struct MonitorUpdatingPersisterSync<
713+
K: Deref,
714+
L: Deref,
715+
ES: Deref,
716+
SP: Deref,
717+
BI: Deref,
718+
FE: Deref,
719+
>(MonitorUpdatingPersister<KVStoreSyncWrapper<K>, L, ES, SP, BI, FE>)
720+
where
721+
K::Target: KVStoreSync,
722+
L::Target: Logger,
723+
ES::Target: EntropySource + Sized,
724+
SP::Target: SignerProvider + Sized,
725+
BI::Target: BroadcasterInterface,
726+
FE::Target: FeeEstimator;
727+
728+
impl<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
729+
MonitorUpdatingPersisterSync<K, L, ES, SP, BI, FE>
730+
where
731+
K::Target: KVStoreSync,
732+
L::Target: Logger,
733+
ES::Target: EntropySource + Sized,
734+
SP::Target: SignerProvider + Sized,
735+
BI::Target: BroadcasterInterface,
736+
FE::Target: FeeEstimator,
737+
{
738+
pub fn new(
739+
kv_store: K, logger: L, maximum_pending_updates: u64, entropy_source: ES,
740+
signer_provider: SP, broadcaster: BI, fee_estimator: FE,
741+
) -> Self {
742+
let kv_store_sync = KVStoreSyncWrapper::new(kv_store);
743+
let persister = MonitorUpdatingPersister::new(
744+
kv_store_sync,
745+
logger,
746+
maximum_pending_updates,
747+
entropy_source,
748+
signer_provider,
749+
broadcaster,
750+
fee_estimator,
751+
);
752+
Self(persister)
753+
}
754+
}
755+
666756
struct MonitorUpdatingPersisterState<K: Deref, L: Deref, ES: Deref, SP: Deref, BI: Deref, FE: Deref>
667757
where
668758
K::Target: KVStore,

0 commit comments

Comments
 (0)