@@ -23,7 +23,7 @@ use std::convert::TryFrom;
23
23
use std:: fmt:: Display ;
24
24
use std:: net:: { Ipv4Addr , Ipv6Addr , SocketAddr , SocketAddrV4 , SocketAddrV6 , ToSocketAddrs } ;
25
25
use std:: str:: FromStr ;
26
- use std:: sync:: { Arc , Mutex } ;
26
+ use std:: sync:: { Arc , Mutex , RwLock } ;
27
27
28
28
pub ( crate ) type ChainMonitor < K > = chainmonitor:: ChainMonitor <
29
29
InMemorySigner ,
@@ -397,44 +397,97 @@ impl Readable for NetAddress {
397
397
}
398
398
399
399
/// Options which apply on a per-channel basis.
400
+ ///
401
+ /// See documentation of [`LdkChannelConfig`] for details.
402
+ #[ derive( Debug ) ]
400
403
pub struct ChannelConfig {
401
- /// See documentation of [`LdkChannelConfig::forwarding_fee_proportional_millionths`].
402
- pub forwarding_fee_proportional_millionths : u32 ,
403
- /// See documentation of [`LdkChannelConfig::forwarding_fee_base_msat`].
404
- pub forwarding_fee_base_msat : u32 ,
405
- /// See documentation of [`LdkChannelConfig::cltv_expiry_delta`].
406
- pub cltv_expiry_delta : u16 ,
407
- /// See documentation of [`LdkChannelConfig::max_dust_htlc_exposure`].
408
- pub max_dust_htlc_exposure : Arc < MaxDustHTLCExposure > ,
409
- /// See documentation of [`LdkChannelConfig::force_close_avoidance_max_fee_satoshis`].
410
- pub force_close_avoidance_max_fee_satoshis : u64 ,
411
- /// See documentation of [`LdkChannelConfig::accept_underpaying_htlcs`].
412
- pub accept_underpaying_htlcs : bool ,
404
+ inner : RwLock < LdkChannelConfig > ,
405
+ }
406
+
407
+ impl Clone for ChannelConfig {
408
+ fn clone ( & self ) -> Self {
409
+ self . inner . read ( ) . unwrap ( ) . clone ( ) . into ( )
410
+ }
411
+ }
412
+
413
+ impl ChannelConfig {
414
+ /// Constructs a new `ChannelConfig`.
415
+ pub fn new ( ) -> Self {
416
+ Self :: default ( )
417
+ }
418
+
419
+ /// Returns the set `forwarding_fee_proportional_millionths`.
420
+ pub fn forwarding_fee_proportional_millionths ( & self ) -> u32 {
421
+ self . inner . read ( ) . unwrap ( ) . forwarding_fee_proportional_millionths
422
+ }
423
+
424
+ /// Sets the `forwarding_fee_proportional_millionths`.
425
+ pub fn set_forwarding_fee_proportional_millionths ( & self , value : u32 ) {
426
+ self . inner . write ( ) . unwrap ( ) . forwarding_fee_proportional_millionths = value;
427
+ }
428
+
429
+ /// Returns the set `forwarding_fee_base_msat`.
430
+ pub fn forwarding_fee_base_msat ( & self ) -> u32 {
431
+ self . inner . read ( ) . unwrap ( ) . forwarding_fee_base_msat
432
+ }
433
+
434
+ /// Sets the `forwarding_fee_base_msat`.
435
+ pub fn set_forwarding_fee_base_msat ( & self , fee_msat : u32 ) {
436
+ self . inner . write ( ) . unwrap ( ) . forwarding_fee_base_msat = fee_msat;
437
+ }
438
+
439
+ /// Returns the set `cltv_expiry_delta`.
440
+ pub fn cltv_expiry_delta ( & self ) -> u16 {
441
+ self . inner . read ( ) . unwrap ( ) . cltv_expiry_delta
442
+ }
443
+
444
+ /// Sets the `cltv_expiry_delta`.
445
+ pub fn set_cltv_expiry_delta ( & self , value : u16 ) {
446
+ self . inner . write ( ) . unwrap ( ) . cltv_expiry_delta = value;
447
+ }
448
+
449
+ /// Returns the set `force_close_avoidance_max_fee_satoshis`.
450
+ pub fn force_close_avoidance_max_fee_satoshis ( & self ) -> u64 {
451
+ self . inner . read ( ) . unwrap ( ) . force_close_avoidance_max_fee_satoshis
452
+ }
453
+
454
+ /// Sets the `force_close_avoidance_max_fee_satoshis`.
455
+ pub fn set_force_close_avoidance_max_fee_satoshis ( & self , value_sat : u64 ) {
456
+ self . inner . write ( ) . unwrap ( ) . force_close_avoidance_max_fee_satoshis = value_sat;
457
+ }
458
+
459
+ /// Returns the set `accept_underpaying_htlcs`.
460
+ pub fn accept_underpaying_htlcs ( & self ) -> bool {
461
+ self . inner . read ( ) . unwrap ( ) . accept_underpaying_htlcs
462
+ }
463
+
464
+ /// Sets the `accept_underpaying_htlcs`.
465
+ pub fn set_accept_underpaying_htlcs ( & self , value : bool ) {
466
+ self . inner . write ( ) . unwrap ( ) . accept_underpaying_htlcs = value;
467
+ }
468
+
469
+ /// Sets the `max_dust_htlc_exposure` from a fixed limit.
470
+ pub fn set_max_dust_htlc_exposure_from_fixed_limit ( & self , limit_msat : u64 ) {
471
+ self . inner . write ( ) . unwrap ( ) . max_dust_htlc_exposure =
472
+ LdkMaxDustHTLCExposure :: FixedLimitMsat ( limit_msat) ;
473
+ }
474
+
475
+ /// Sets the `max_dust_htlc_exposure` from a fee rate multiplier.
476
+ pub fn set_max_dust_htlc_exposure_from_fee_rate_multiplier ( & self , multiplier : u64 ) {
477
+ self . inner . write ( ) . unwrap ( ) . max_dust_htlc_exposure =
478
+ LdkMaxDustHTLCExposure :: FeeRateMultiplier ( multiplier) ;
479
+ }
413
480
}
414
481
415
482
impl From < LdkChannelConfig > for ChannelConfig {
416
483
fn from ( value : LdkChannelConfig ) -> Self {
417
- Self {
418
- forwarding_fee_proportional_millionths : value. forwarding_fee_proportional_millionths ,
419
- forwarding_fee_base_msat : value. forwarding_fee_base_msat ,
420
- cltv_expiry_delta : value. cltv_expiry_delta ,
421
- max_dust_htlc_exposure : Arc :: new ( MaxDustHTLCExposure ( value. max_dust_htlc_exposure ) ) ,
422
- force_close_avoidance_max_fee_satoshis : value. force_close_avoidance_max_fee_satoshis ,
423
- accept_underpaying_htlcs : value. accept_underpaying_htlcs ,
424
- }
484
+ Self { inner : RwLock :: new ( value) }
425
485
}
426
486
}
427
487
428
488
impl From < ChannelConfig > for LdkChannelConfig {
429
489
fn from ( value : ChannelConfig ) -> Self {
430
- Self {
431
- forwarding_fee_proportional_millionths : value. forwarding_fee_proportional_millionths ,
432
- forwarding_fee_base_msat : value. forwarding_fee_base_msat ,
433
- cltv_expiry_delta : value. cltv_expiry_delta ,
434
- max_dust_htlc_exposure : value. max_dust_htlc_exposure . 0 . clone ( ) ,
435
- force_close_avoidance_max_fee_satoshis : value. force_close_avoidance_max_fee_satoshis ,
436
- accept_underpaying_htlcs : value. accept_underpaying_htlcs ,
437
- }
490
+ * value. inner . read ( ) . unwrap ( )
438
491
}
439
492
}
440
493
@@ -443,20 +496,3 @@ impl Default for ChannelConfig {
443
496
LdkChannelConfig :: default ( ) . into ( )
444
497
}
445
498
}
446
-
447
- /// Options for how to set the max dust HTLC exposure allowed on a channel.
448
- ///
449
- /// See documentation of [`LdkMaxDustHTLCExposure`] for details.
450
- pub struct MaxDustHTLCExposure ( pub LdkMaxDustHTLCExposure ) ;
451
-
452
- impl MaxDustHTLCExposure {
453
- /// See documentation of [`LdkMaxDustHTLCExposure::FixedLimitMsat`] for details.
454
- pub fn from_fixed_limit ( limit_msat : u64 ) -> Self {
455
- Self ( LdkMaxDustHTLCExposure :: FixedLimitMsat ( limit_msat) )
456
- }
457
-
458
- /// See documentation of [`LdkMaxDustHTLCExposure::FeeRateMultiplier`] for details.
459
- pub fn from_fee_multiplier ( multiplier : u64 ) -> Self {
460
- Self ( LdkMaxDustHTLCExposure :: FeeRateMultiplier ( multiplier) )
461
- }
462
- }
0 commit comments