1
1
use crate :: {
2
- hex_utils, ChannelManager , Error , FilesystemPersister , LdkLiteChainAccess , LdkLiteConfig ,
2
+ hex_utils, ChannelManager , Error , LdkLiteChainAccess , LdkLiteConfig ,
3
3
NetworkGraph , PaymentInfo , PaymentInfoStorage , PaymentStatus ,
4
4
} ;
5
5
6
6
#[ allow( unused_imports) ]
7
7
use crate :: logger:: {
8
- log_error, log_given_level, log_info, log_internal, log_trace, log_warn, FilesystemLogger ,
8
+ log_error, log_given_level, log_info, log_internal, log_trace, log_warn,
9
9
Logger ,
10
10
} ;
11
11
@@ -22,6 +22,7 @@ use lightning::util::ser::{Readable, ReadableArgs, Writeable, Writer};
22
22
use bitcoin:: secp256k1:: Secp256k1 ;
23
23
use rand:: { thread_rng, Rng } ;
24
24
use std:: collections:: { hash_map, VecDeque } ;
25
+ use std:: ops:: Deref ;
25
26
use std:: sync:: { Arc , Condvar , Mutex } ;
26
27
use std:: thread;
27
28
use std:: time:: Duration ;
@@ -152,14 +153,20 @@ impl Writeable for LdkLiteEvent {
152
153
}
153
154
}
154
155
155
- pub ( crate ) struct LdkLiteEventQueue < K : KVStorePersister > {
156
+ pub ( crate ) struct LdkLiteEventQueue < K : Deref >
157
+ where
158
+ K :: Target : KVStorePersister ,
159
+ {
156
160
queue : Mutex < EventQueueSerWrapper > ,
157
161
notifier : Condvar ,
158
- persister : Arc < K > ,
162
+ persister : K ,
159
163
}
160
164
161
- impl < K : KVStorePersister > LdkLiteEventQueue < K > {
162
- pub ( crate ) fn new ( persister : Arc < K > ) -> Self {
165
+ impl < K : Deref > LdkLiteEventQueue < K >
166
+ where
167
+ K :: Target : KVStorePersister ,
168
+ {
169
+ pub ( crate ) fn new ( persister : K ) -> Self {
163
170
let queue: Mutex < EventQueueSerWrapper > = Mutex :: new ( EventQueueSerWrapper ( VecDeque :: new ( ) ) ) ;
164
171
let notifier = Condvar :: new ( ) ;
165
172
Self { queue, notifier, persister }
@@ -194,10 +201,13 @@ impl<K: KVStorePersister> LdkLiteEventQueue<K> {
194
201
}
195
202
}
196
203
197
- impl < K : KVStorePersister > ReadableArgs < Arc < K > > for LdkLiteEventQueue < K > {
204
+ impl < K : Deref > ReadableArgs < K > for LdkLiteEventQueue < K >
205
+ where
206
+ K :: Target : KVStorePersister ,
207
+ {
198
208
#[ inline]
199
209
fn read < R : lightning:: io:: Read > (
200
- reader : & mut R , persister : Arc < K > ,
210
+ reader : & mut R , persister : K ,
201
211
) -> Result < Self , lightning:: ln:: msgs:: DecodeError > {
202
212
let queue: Mutex < EventQueueSerWrapper > = Mutex :: new ( Readable :: read ( reader) ?) ;
203
213
let notifier = Condvar :: new ( ) ;
@@ -230,26 +240,32 @@ impl Writeable for EventQueueSerWrapper {
230
240
}
231
241
}
232
242
233
- pub ( crate ) struct LdkLiteEventHandler {
234
- chain_access : Arc < LdkLiteChainAccess < bdk:: sled:: Tree > > ,
235
- event_queue : Arc < LdkLiteEventQueue < FilesystemPersister > > ,
243
+ pub ( crate ) struct LdkLiteEventHandler < K : Deref , L : Deref >
244
+ where
245
+ K :: Target : KVStorePersister ,
246
+ L :: Target : Logger ,
247
+ {
248
+ chain_access : Arc < ChainAccess < bdk:: sled:: Tree > > ,
249
+ event_queue : Arc < EventQueue < K > > ,
236
250
channel_manager : Arc < ChannelManager > ,
237
251
network_graph : Arc < NetworkGraph > ,
238
252
keys_manager : Arc < KeysManager > ,
239
253
inbound_payments : Arc < PaymentInfoStorage > ,
240
254
outbound_payments : Arc < PaymentInfoStorage > ,
241
- logger : Arc < FilesystemLogger > ,
242
- _config : Arc < LdkLiteConfig > ,
255
+ logger : L ,
256
+ _config : Arc < Config > ,
243
257
}
244
258
245
- impl LdkLiteEventHandler {
259
+ impl < K : Deref , L : Deref > LdkLiteEventHandler < K , L >
260
+ where
261
+ K :: Target : KVStorePersister ,
262
+ L :: Target : Logger ,
263
+ {
246
264
pub fn new (
247
- chain_access : Arc < LdkLiteChainAccess < bdk:: sled:: Tree > > ,
248
- event_queue : Arc < LdkLiteEventQueue < FilesystemPersister > > ,
265
+ chain_access : Arc < ChainAccess < bdk:: sled:: Tree > > , event_queue : Arc < EventQueue < K > > ,
249
266
channel_manager : Arc < ChannelManager > , network_graph : Arc < NetworkGraph > ,
250
267
keys_manager : Arc < KeysManager > , inbound_payments : Arc < PaymentInfoStorage > ,
251
- outbound_payments : Arc < PaymentInfoStorage > , logger : Arc < FilesystemLogger > ,
252
- _config : Arc < LdkLiteConfig > ,
268
+ outbound_payments : Arc < PaymentInfoStorage > , logger : L , _config : Arc < Config > ,
253
269
) -> Self {
254
270
Self {
255
271
event_queue,
@@ -265,8 +281,12 @@ impl LdkLiteEventHandler {
265
281
}
266
282
}
267
283
268
- impl LdkEventHandler for LdkLiteEventHandler {
269
- fn handle_event ( & self , event : & LdkEvent ) {
284
+ impl < K : Deref , L : Deref > LdkEventHandler for LdkLiteEventHandler < K , L >
285
+ where
286
+ K :: Target : KVStorePersister ,
287
+ L :: Target : Logger ,
288
+ {
289
+ fn handle_event ( & self , event : LdkEvent ) {
270
290
match event {
271
291
LdkEvent :: FundingGenerationReady {
272
292
temporary_channel_id,
0 commit comments