@@ -136,7 +136,7 @@ pub(crate) struct EventQueue<K: Deref>
136
136
where
137
137
K :: Target : KVStorePersister ,
138
138
{
139
- queue : Mutex < VecDeque < Arc < Event > > > ,
139
+ queue : Mutex < VecDeque < Event > > ,
140
140
notifier : Condvar ,
141
141
persister : K ,
142
142
}
@@ -146,26 +146,26 @@ where
146
146
K :: Target : KVStorePersister ,
147
147
{
148
148
pub ( crate ) fn new ( persister : K ) -> Self {
149
- let queue: Mutex < VecDeque < Arc < Event > > > = Mutex :: new ( VecDeque :: new ( ) ) ;
149
+ let queue: Mutex < VecDeque < Event > > = Mutex :: new ( VecDeque :: new ( ) ) ;
150
150
let notifier = Condvar :: new ( ) ;
151
151
Self { queue, notifier, persister }
152
152
}
153
153
154
154
pub ( crate ) fn add_event ( & self , event : Event ) -> Result < ( ) , Error > {
155
155
{
156
156
let mut locked_queue = self . queue . lock ( ) . unwrap ( ) ;
157
- locked_queue. push_back ( Arc :: new ( event) ) ;
157
+ locked_queue. push_back ( event) ;
158
158
self . persist_queue ( & * locked_queue) ?;
159
159
}
160
160
161
161
self . notifier . notify_one ( ) ;
162
162
Ok ( ( ) )
163
163
}
164
164
165
- pub ( crate ) fn next_event ( & self ) -> Arc < Event > {
165
+ pub ( crate ) fn next_event ( & self ) -> Event {
166
166
let locked_queue =
167
167
self . notifier . wait_while ( self . queue . lock ( ) . unwrap ( ) , |queue| queue. is_empty ( ) ) . unwrap ( ) ;
168
- Arc :: clone ( & locked_queue. front ( ) . unwrap ( ) )
168
+ locked_queue. front ( ) . unwrap ( ) . clone ( )
169
169
}
170
170
171
171
pub ( crate ) fn event_handled ( & self ) -> Result < ( ) , Error > {
@@ -178,7 +178,7 @@ where
178
178
Ok ( ( ) )
179
179
}
180
180
181
- fn persist_queue ( & self , locked_queue : & VecDeque < Arc < Event > > ) -> Result < ( ) , Error > {
181
+ fn persist_queue ( & self , locked_queue : & VecDeque < Event > ) -> Result < ( ) , Error > {
182
182
self . persister
183
183
. persist ( EVENTS_PERSISTENCE_KEY , & EventQueueSerWrapper ( locked_queue) )
184
184
. map_err ( |_| Error :: PersistenceFailed ) ?;
@@ -195,13 +195,13 @@ where
195
195
reader : & mut R , persister : K ,
196
196
) -> Result < Self , lightning:: ln:: msgs:: DecodeError > {
197
197
let read_queue: EventQueueDeserWrapper = Readable :: read ( reader) ?;
198
- let queue: Mutex < VecDeque < Arc < Event > > > = Mutex :: new ( read_queue. 0 ) ;
198
+ let queue: Mutex < VecDeque < Event > > = Mutex :: new ( read_queue. 0 ) ;
199
199
let notifier = Condvar :: new ( ) ;
200
200
Ok ( Self { queue, notifier, persister } )
201
201
}
202
202
}
203
203
204
- struct EventQueueDeserWrapper ( VecDeque < Arc < Event > > ) ;
204
+ struct EventQueueDeserWrapper ( VecDeque < Event > ) ;
205
205
206
206
impl Readable for EventQueueDeserWrapper {
207
207
fn read < R : lightning:: io:: Read > (
@@ -210,13 +210,13 @@ impl Readable for EventQueueDeserWrapper {
210
210
let len: u16 = Readable :: read ( reader) ?;
211
211
let mut queue = VecDeque :: with_capacity ( len as usize ) ;
212
212
for _ in 0 ..len {
213
- queue. push_back ( Arc :: new ( Readable :: read ( reader) ?) ) ;
213
+ queue. push_back ( Readable :: read ( reader) ?) ;
214
214
}
215
215
Ok ( Self ( queue) )
216
216
}
217
217
}
218
218
219
- struct EventQueueSerWrapper < ' a > ( & ' a VecDeque < Arc < Event > > ) ;
219
+ struct EventQueueSerWrapper < ' a > ( & ' a VecDeque < Event > ) ;
220
220
221
221
impl Writeable for EventQueueSerWrapper < ' _ > {
222
222
fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , lightning:: io:: Error > {
@@ -594,7 +594,7 @@ mod tests {
594
594
595
595
// Check we get the expected event and that it is returned until we mark it handled.
596
596
for _ in 0 ..5 {
597
- assert_eq ! ( * event_queue. next_event( ) , expected_event) ;
597
+ assert_eq ! ( event_queue. next_event( ) , expected_event) ;
598
598
assert_eq ! ( false , test_persister. get_and_clear_pending_persist( ) ) ;
599
599
}
600
600
0 commit comments