@@ -289,15 +289,15 @@ const ERR: () = "You need at least 32 bit pointers (well, usize, but we'll assum
289
289
/// lifetimes). Other times you can afford a reference, which is more efficient, in which case
290
290
/// SimpleRefChannelManager is the more appropriate type. Defining these type aliases prevents
291
291
/// issues such as overly long function definitions.
292
- pub type SimpleArcChannelManager < M , T > = Arc < ChannelManager < InMemoryChannelKeys , Arc < M > , Arc < T > > > ;
292
+ pub type SimpleArcChannelManager < M , T , K > = Arc < ChannelManager < InMemoryChannelKeys , Arc < M > , Arc < T > , Arc < K > > > ;
293
293
294
294
/// SimpleRefChannelManager is a type alias for a ChannelManager reference, and is the reference
295
295
/// counterpart to the SimpleArcChannelManager type alias. Use this type by default when you don't
296
296
/// need a ChannelManager with a static lifetime. You'll need a static lifetime in cases such as
297
297
/// usage of lightning-net-tokio (since tokio::spawn requires parameters with static lifetimes).
298
298
/// But if this is not necessary, using a reference is more efficient. Defining these type aliases
299
299
/// helps with issues such as long function definitions.
300
- pub type SimpleRefChannelManager < ' a , ' b , M , T > = ChannelManager < InMemoryChannelKeys , & ' a M , & ' b T > ;
300
+ pub type SimpleRefChannelManager < ' a , ' b , ' c , M , T , K > = ChannelManager < InMemoryChannelKeys , & ' a M , & ' b T , & ' c K > ;
301
301
302
302
/// Manager which keeps track of a number of channels and sends messages to the appropriate
303
303
/// channel, also tracking HTLC preimages and forwarding onion packets appropriately.
@@ -335,9 +335,10 @@ pub type SimpleRefChannelManager<'a, 'b, M, T> = ChannelManager<InMemoryChannelK
335
335
/// essentially you should default to using a SimpleRefChannelManager, and use a
336
336
/// SimpleArcChannelManager when you require a ChannelManager with a static lifetime, such as when
337
337
/// you're using lightning-net-tokio.
338
- pub struct ChannelManager < ChanSigner : ChannelKeys , M : Deref , T : Deref >
338
+ pub struct ChannelManager < ChanSigner : ChannelKeys , M : Deref , T : Deref , K : Deref >
339
339
where M :: Target : ManyChannelMonitor < ChanSigner > ,
340
340
T :: Target : BroadcasterInterface ,
341
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
341
342
{
342
343
default_configuration : UserConfig ,
343
344
genesis_hash : Sha256dHash ,
@@ -372,7 +373,7 @@ pub struct ChannelManager<ChanSigner: ChannelKeys, M: Deref, T: Deref>
372
373
/// Taken first everywhere where we are making changes before any other locks.
373
374
total_consistency_lock : RwLock < ( ) > ,
374
375
375
- keys_manager : Arc < KeysInterface < ChanKeySigner = ChanSigner > > ,
376
+ keys_manager : K ,
376
377
377
378
logger : Arc < Logger > ,
378
379
}
@@ -610,9 +611,10 @@ macro_rules! maybe_break_monitor_err {
610
611
}
611
612
}
612
613
613
- impl < ChanSigner : ChannelKeys , M : Deref , T : Deref > ChannelManager < ChanSigner , M , T >
614
+ impl < ChanSigner : ChannelKeys , M : Deref , T : Deref , K : Deref > ChannelManager < ChanSigner , M , T , K >
614
615
where M :: Target : ManyChannelMonitor < ChanSigner > ,
615
616
T :: Target : BroadcasterInterface ,
617
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
616
618
{
617
619
/// Constructs a new ChannelManager to hold several channels and route between them.
618
620
///
@@ -632,7 +634,7 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref> ChannelManager<ChanSigner, M,
632
634
/// the ChannelManager as a listener to the BlockNotifier and call the BlockNotifier's
633
635
/// `block_(dis)connected` methods, which will notify all registered listeners in one
634
636
/// go.
635
- pub fn new ( network : Network , feeest : Arc < FeeEstimator > , monitor : M , tx_broadcaster : T , logger : Arc < Logger > , keys_manager : Arc < KeysInterface < ChanKeySigner = ChanSigner > > , config : UserConfig , current_blockchain_height : usize ) -> Result < ChannelManager < ChanSigner , M , T > , secp256k1:: Error > {
637
+ pub fn new ( network : Network , feeest : Arc < FeeEstimator > , monitor : M , tx_broadcaster : T , logger : Arc < Logger > , keys_manager : K , config : UserConfig , current_blockchain_height : usize ) -> Result < ChannelManager < ChanSigner , M , T , K > , secp256k1:: Error > {
636
638
let secp_ctx = Secp256k1 :: new ( ) ;
637
639
638
640
let res = ChannelManager {
@@ -2548,9 +2550,10 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref> ChannelManager<ChanSigner, M,
2548
2550
}
2549
2551
}
2550
2552
2551
- impl < ChanSigner : ChannelKeys , M : Deref , T : Deref > events:: MessageSendEventsProvider for ChannelManager < ChanSigner , M , T >
2553
+ impl < ChanSigner : ChannelKeys , M : Deref , T : Deref , K : Deref > events:: MessageSendEventsProvider for ChannelManager < ChanSigner , M , T , K >
2552
2554
where M :: Target : ManyChannelMonitor < ChanSigner > ,
2553
2555
T :: Target : BroadcasterInterface ,
2556
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
2554
2557
{
2555
2558
fn get_and_clear_pending_msg_events ( & self ) -> Vec < events:: MessageSendEvent > {
2556
2559
// TODO: Event release to users and serialization is currently race-y: it's very easy for a
@@ -2576,9 +2579,10 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref> events::MessageSendEventsProvi
2576
2579
}
2577
2580
}
2578
2581
2579
- impl < ChanSigner : ChannelKeys , M : Deref , T : Deref > events:: EventsProvider for ChannelManager < ChanSigner , M , T >
2582
+ impl < ChanSigner : ChannelKeys , M : Deref , T : Deref , K : Deref > events:: EventsProvider for ChannelManager < ChanSigner , M , T , K >
2580
2583
where M :: Target : ManyChannelMonitor < ChanSigner > ,
2581
2584
T :: Target : BroadcasterInterface ,
2585
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
2582
2586
{
2583
2587
fn get_and_clear_pending_events ( & self ) -> Vec < events:: Event > {
2584
2588
// TODO: Event release to users and serialization is currently race-y: it's very easy for a
@@ -2604,9 +2608,11 @@ impl<ChanSigner: ChannelKeys, M: Deref, T: Deref> events::EventsProvider for Cha
2604
2608
}
2605
2609
}
2606
2610
2607
- impl < ChanSigner : ChannelKeys , M : Deref + Sync + Send , T : Deref + Sync + Send > ChainListener for ChannelManager < ChanSigner , M , T >
2611
+ impl < ChanSigner : ChannelKeys , M : Deref + Sync + Send , T : Deref + Sync + Send , K : Deref + Sync + Send >
2612
+ ChainListener for ChannelManager < ChanSigner , M , T , K >
2608
2613
where M :: Target : ManyChannelMonitor < ChanSigner > ,
2609
2614
T :: Target : BroadcasterInterface ,
2615
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
2610
2616
{
2611
2617
fn block_connected ( & self , header : & BlockHeader , height : u32 , txn_matched : & [ & Transaction ] , indexes_of_txn_matched : & [ u32 ] ) {
2612
2618
let header_hash = header. bitcoin_hash ( ) ;
@@ -2724,9 +2730,11 @@ impl<ChanSigner: ChannelKeys, M: Deref + Sync + Send, T: Deref + Sync + Send> Ch
2724
2730
}
2725
2731
}
2726
2732
2727
- impl < ChanSigner : ChannelKeys , M : Deref + Sync + Send , T : Deref + Sync + Send > ChannelMessageHandler for ChannelManager < ChanSigner , M , T >
2733
+ impl < ChanSigner : ChannelKeys , M : Deref + Sync + Send , T : Deref + Sync + Send , K : Deref + Sync + Send >
2734
+ ChannelMessageHandler for ChannelManager < ChanSigner , M , T , K >
2728
2735
where M :: Target : ManyChannelMonitor < ChanSigner > ,
2729
2736
T :: Target : BroadcasterInterface ,
2737
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
2730
2738
{
2731
2739
fn handle_open_channel ( & self , their_node_id : & PublicKey , their_features : InitFeatures , msg : & msgs:: OpenChannel ) {
2732
2740
let _ = self . total_consistency_lock . read ( ) . unwrap ( ) ;
@@ -3197,9 +3205,10 @@ impl<R: ::std::io::Read> Readable<R> for HTLCForwardInfo {
3197
3205
}
3198
3206
}
3199
3207
3200
- impl < ChanSigner : ChannelKeys + Writeable , M : Deref , T : Deref > Writeable for ChannelManager < ChanSigner , M , T >
3208
+ impl < ChanSigner : ChannelKeys + Writeable , M : Deref , T : Deref , K : Deref > Writeable for ChannelManager < ChanSigner , M , T , K >
3201
3209
where M :: Target : ManyChannelMonitor < ChanSigner > ,
3202
3210
T :: Target : BroadcasterInterface ,
3211
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
3203
3212
{
3204
3213
fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , :: std:: io:: Error > {
3205
3214
let _ = self . total_consistency_lock . write ( ) . unwrap ( ) ;
@@ -3271,14 +3280,15 @@ impl<ChanSigner: ChannelKeys + Writeable, M: Deref, T: Deref> Writeable for Chan
3271
3280
/// 5) Move the ChannelMonitors into your local ManyChannelMonitor.
3272
3281
/// 6) Disconnect/connect blocks on the ChannelManager.
3273
3282
/// 7) Register the new ChannelManager with your ChainWatchInterface.
3274
- pub struct ChannelManagerReadArgs < ' a , ChanSigner : ' a + ChannelKeys , M : Deref , T : Deref >
3283
+ pub struct ChannelManagerReadArgs < ' a , ChanSigner : ' a + ChannelKeys , M : Deref , T : Deref , K : Deref >
3275
3284
where M :: Target : ManyChannelMonitor < ChanSigner > ,
3276
3285
T :: Target : BroadcasterInterface ,
3286
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
3277
3287
{
3278
3288
3279
3289
/// The keys provider which will give us relevant keys. Some keys will be loaded during
3280
3290
/// deserialization.
3281
- pub keys_manager : Arc < KeysInterface < ChanKeySigner = ChanSigner > > ,
3291
+ pub keys_manager : K ,
3282
3292
3283
3293
/// The fee_estimator for use in the ChannelManager in the future.
3284
3294
///
@@ -3315,11 +3325,13 @@ pub struct ChannelManagerReadArgs<'a, ChanSigner: 'a + ChannelKeys, M: Deref, T:
3315
3325
pub channel_monitors : & ' a mut HashMap < OutPoint , & ' a mut ChannelMonitor < ChanSigner > > ,
3316
3326
}
3317
3327
3318
- impl < ' a , R : :: std:: io:: Read , ChanSigner : ChannelKeys + Readable < R > , M : Deref , T : Deref > ReadableArgs < R , ChannelManagerReadArgs < ' a , ChanSigner , M , T > > for ( Sha256dHash , ChannelManager < ChanSigner , M , T > )
3328
+ impl < ' a , R : :: std:: io:: Read , ChanSigner : ChannelKeys + Readable < R > , M : Deref , T : Deref , K : Deref >
3329
+ ReadableArgs < R , ChannelManagerReadArgs < ' a , ChanSigner , M , T , K > > for ( Sha256dHash , ChannelManager < ChanSigner , M , T , K > )
3319
3330
where M :: Target : ManyChannelMonitor < ChanSigner > ,
3320
3331
T :: Target : BroadcasterInterface ,
3332
+ K :: Target : KeysInterface < ChanKeySigner = ChanSigner > ,
3321
3333
{
3322
- fn read ( reader : & mut R , args : ChannelManagerReadArgs < ' a , ChanSigner , M , T > ) -> Result < Self , DecodeError > {
3334
+ fn read ( reader : & mut R , args : ChannelManagerReadArgs < ' a , ChanSigner , M , T , K > ) -> Result < Self , DecodeError > {
3323
3335
let _ver: u8 = Readable :: read ( reader) ?;
3324
3336
let min_ver: u8 = Readable :: read ( reader) ?;
3325
3337
if min_ver > SERIALIZATION_VERSION {
0 commit comments