@@ -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+
236246impl < K : Deref > KVStore for KVStoreSyncWrapper < K >
237247where
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+
666756struct MonitorUpdatingPersisterState < K : Deref , L : Deref , ES : Deref , SP : Deref , BI : Deref , FE : Deref >
667757where
668758 K :: Target : KVStore ,
0 commit comments