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