@@ -167,20 +167,20 @@ impl<K: KVStorePersister> LdkLiteEventQueue<K> {
167
167
pub ( crate ) fn add_event ( & self , event : LdkLiteEvent ) -> Result < ( ) , Error > {
168
168
{
169
169
let mut locked_queue = self . queue . lock ( ) . unwrap ( ) ;
170
- locked_queue. 0 . push_back ( event) ;
170
+ locked_queue. 0 . push_back ( Arc :: new ( event) ) ;
171
171
self . persister . persist ( EVENTS_PERSISTENCE_KEY , & * locked_queue) ?;
172
172
}
173
173
174
174
self . notifier . notify_one ( ) ;
175
175
Ok ( ( ) )
176
176
}
177
177
178
- pub ( crate ) fn next_event ( & self ) -> LdkLiteEvent {
178
+ pub ( crate ) fn next_event ( & self ) -> Arc < LdkLiteEvent > {
179
179
let locked_queue = self
180
180
. notifier
181
181
. wait_while ( self . queue . lock ( ) . unwrap ( ) , |queue| queue. 0 . is_empty ( ) )
182
182
. unwrap ( ) ;
183
- locked_queue. 0 . front ( ) . unwrap ( ) . clone ( )
183
+ Arc :: clone ( & locked_queue. 0 . front ( ) . unwrap ( ) )
184
184
}
185
185
186
186
pub ( crate ) fn event_handled ( & self ) -> Result < ( ) , Error > {
@@ -205,7 +205,7 @@ impl<K: KVStorePersister> ReadableArgs<Arc<K>> for LdkLiteEventQueue<K> {
205
205
}
206
206
}
207
207
208
- struct EventQueueSerWrapper ( VecDeque < LdkLiteEvent > ) ;
208
+ struct EventQueueSerWrapper ( VecDeque < Arc < LdkLiteEvent > > ) ;
209
209
210
210
impl Readable for EventQueueSerWrapper {
211
211
fn read < R : lightning:: io:: Read > (
@@ -214,7 +214,7 @@ impl Readable for EventQueueSerWrapper {
214
214
let len: u16 = Readable :: read ( reader) ?;
215
215
let mut queue = VecDeque :: with_capacity ( len as usize ) ;
216
216
for _ in 0 ..len {
217
- queue. push_back ( Readable :: read ( reader) ?) ;
217
+ queue. push_back ( Arc :: new ( Readable :: read ( reader) ?) ) ;
218
218
}
219
219
Ok ( EventQueueSerWrapper ( queue) )
220
220
}
0 commit comments