@@ -3,7 +3,7 @@ use crate::{
33 PaymentInfo , PaymentInfoStorage , PaymentStatus , Wallet ,
44} ;
55
6- use crate :: io:: { KVStoreUnpersister , EVENT_QUEUE_PERSISTENCE_KEY } ;
6+ use crate :: io:: { KVStore , EVENT_QUEUE_PERSISTENCE_KEY , EVENT_QUEUE_PERSISTENCE_NAMESPACE } ;
77use crate :: logger:: { log_error, log_info, Logger } ;
88
99use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
@@ -14,7 +14,6 @@ use lightning::util::errors::APIError;
1414use lightning:: util:: events:: Event as LdkEvent ;
1515use lightning:: util:: events:: EventHandler as LdkEventHandler ;
1616use lightning:: util:: events:: PaymentPurpose ;
17- use lightning:: util:: persist:: KVStorePersister ;
1817use lightning:: util:: ser:: { Readable , ReadableArgs , Writeable , Writer } ;
1918
2019use bitcoin:: secp256k1:: Secp256k1 ;
@@ -85,21 +84,21 @@ impl_writeable_tlv_based_enum!(Event,
8584
8685pub struct EventQueue < K : Deref >
8786where
88- K :: Target : KVStorePersister ,
87+ K :: Target : KVStore ,
8988{
9089 queue : Mutex < VecDeque < Event > > ,
9190 notifier : Condvar ,
92- persister : K ,
91+ kv_store : K ,
9392}
9493
9594impl < K : Deref > EventQueue < K >
9695where
97- K :: Target : KVStorePersister ,
96+ K :: Target : KVStore ,
9897{
99- pub ( crate ) fn new ( persister : K ) -> Self {
98+ pub ( crate ) fn new ( kv_store : K ) -> Self {
10099 let queue: Mutex < VecDeque < Event > > = Mutex :: new ( VecDeque :: new ( ) ) ;
101100 let notifier = Condvar :: new ( ) ;
102- Self { queue, notifier, persister }
101+ Self { queue, notifier, kv_store }
103102 }
104103
105104 pub ( crate ) fn add_event ( & self , event : Event ) -> Result < ( ) , Error > {
@@ -130,25 +129,30 @@ where
130129 }
131130
132131 fn persist_queue ( & self , locked_queue : & VecDeque < Event > ) -> Result < ( ) , Error > {
133- self . persister
134- . persist ( EVENT_QUEUE_PERSISTENCE_KEY , & EventQueueSerWrapper ( locked_queue) )
132+ let mut writer = self
133+ . kv_store
134+ . write ( EVENT_QUEUE_PERSISTENCE_NAMESPACE , EVENT_QUEUE_PERSISTENCE_KEY )
135135 . map_err ( |_| Error :: PersistenceFailed ) ?;
136+ EventQueueSerWrapper ( locked_queue)
137+ . write ( & mut writer)
138+ . map_err ( |_| Error :: PersistenceFailed ) ?;
139+ writer. commit ( ) . map_err ( |_| Error :: PersistenceFailed ) ?;
136140 Ok ( ( ) )
137141 }
138142}
139143
140144impl < K : Deref > ReadableArgs < K > for EventQueue < K >
141145where
142- K :: Target : KVStorePersister ,
146+ K :: Target : KVStore ,
143147{
144148 #[ inline]
145149 fn read < R : lightning:: io:: Read > (
146- reader : & mut R , persister : K ,
150+ reader : & mut R , kv_store : K ,
147151 ) -> Result < Self , lightning:: ln:: msgs:: DecodeError > {
148152 let read_queue: EventQueueDeserWrapper = Readable :: read ( reader) ?;
149153 let queue: Mutex < VecDeque < Event > > = Mutex :: new ( read_queue. 0 ) ;
150154 let notifier = Condvar :: new ( ) ;
151- Ok ( Self { queue, notifier, persister } )
155+ Ok ( Self { queue, notifier, kv_store } )
152156 }
153157}
154158
@@ -181,7 +185,7 @@ impl Writeable for EventQueueSerWrapper<'_> {
181185
182186pub ( crate ) struct EventHandler < K : Deref + Clone , L : Deref >
183187where
184- K :: Target : KVStorePersister + KVStoreUnpersister ,
188+ K :: Target : KVStore ,
185189 L :: Target : Logger ,
186190{
187191 wallet : Arc < Wallet < bdk:: database:: SqliteDatabase > > ,
@@ -197,7 +201,7 @@ where
197201
198202impl < K : Deref + Clone , L : Deref > EventHandler < K , L >
199203where
200- K :: Target : KVStorePersister + KVStoreUnpersister ,
204+ K :: Target : KVStore ,
201205 L :: Target : Logger ,
202206{
203207 pub fn new (
@@ -222,7 +226,7 @@ where
222226
223227impl < K : Deref + Clone , L : Deref > LdkEventHandler for EventHandler < K , L >
224228where
225- K :: Target : KVStorePersister + KVStoreUnpersister ,
229+ K :: Target : KVStore ,
226230 L :: Target : Logger ,
227231{
228232 fn handle_event ( & self , event : LdkEvent ) {
@@ -551,33 +555,35 @@ where
551555#[ cfg( test) ]
552556mod tests {
553557 use super :: * ;
554- use crate :: test:: utils:: TestPersister ;
558+ use crate :: test:: utils:: TestStore ;
555559
556560 #[ test]
557561 fn event_queue_persistence ( ) {
558- let persister = Arc :: new ( TestPersister :: new ( ) ) ;
559- let event_queue = EventQueue :: new ( Arc :: clone ( & persister ) ) ;
562+ let store = Arc :: new ( TestStore :: new ( ) ) ;
563+ let event_queue = EventQueue :: new ( Arc :: clone ( & store ) ) ;
560564
561565 let expected_event = Event :: ChannelReady { channel_id : [ 23u8 ; 32 ] , user_channel_id : 2323 } ;
562566 event_queue. add_event ( expected_event. clone ( ) ) . unwrap ( ) ;
563- assert ! ( persister . get_and_clear_did_persist( ) ) ;
567+ assert ! ( store . get_and_clear_did_persist( ) ) ;
564568
565569 // Check we get the expected event and that it is returned until we mark it handled.
566570 for _ in 0 ..5 {
567571 assert_eq ! ( event_queue. next_event( ) , expected_event) ;
568- assert_eq ! ( false , persister . get_and_clear_did_persist( ) ) ;
572+ assert_eq ! ( false , store . get_and_clear_did_persist( ) ) ;
569573 }
570574
571575 // Check we can read back what we persisted.
572- let persisted_bytes = persister. get_persisted_bytes ( EVENT_QUEUE_PERSISTENCE_KEY ) . unwrap ( ) ;
576+ let persisted_bytes = store
577+ . get_persisted_bytes ( EVENT_QUEUE_PERSISTENCE_NAMESPACE , EVENT_QUEUE_PERSISTENCE_KEY )
578+ . unwrap ( ) ;
573579 let deser_event_queue =
574- EventQueue :: read ( & mut & persisted_bytes[ ..] , Arc :: clone ( & persister ) ) . unwrap ( ) ;
580+ EventQueue :: read ( & mut & persisted_bytes[ ..] , Arc :: clone ( & store ) ) . unwrap ( ) ;
575581 assert_eq ! ( deser_event_queue. next_event( ) , expected_event) ;
576- assert ! ( !persister . get_and_clear_did_persist( ) ) ;
582+ assert ! ( !store . get_and_clear_did_persist( ) ) ;
577583
578584 // Check we persisted on `event_handled()`
579585 event_queue. event_handled ( ) . unwrap ( ) ;
580586
581- assert ! ( persister . get_and_clear_did_persist( ) ) ;
587+ assert ! ( store . get_and_clear_did_persist( ) ) ;
582588 }
583589}
0 commit comments