@@ -22,7 +22,7 @@ use std::convert::TryFrom;
2222use std:: fmt:: Display ;
2323use std:: net:: { Ipv4Addr , Ipv6Addr , SocketAddr , SocketAddrV4 , SocketAddrV6 , ToSocketAddrs } ;
2424use std:: str:: FromStr ;
25- use std:: sync:: { Arc , Mutex } ;
25+ use std:: sync:: { Arc , Mutex , RwLock } ;
2626
2727pub ( crate ) type ChainMonitor < K > = chainmonitor:: ChainMonitor <
2828 InMemorySigner ,
@@ -396,44 +396,97 @@ impl Readable for NetAddress {
396396}
397397
398398/// Options which apply on a per-channel basis.
399+ ///
400+ /// See documentation of [`LdkChannelConfig`] for details.
401+ #[ derive( Debug ) ]
399402pub 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+ }
412477}
413478
414479impl From < LdkChannelConfig > for ChannelConfig {
415480 fn from ( value : LdkChannelConfig ) -> Self {
416481 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)
423483 }
424484 }
425485}
426486
427487impl From < ChannelConfig > for LdkChannelConfig {
428488 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 ( )
437490 }
438491}
439492
@@ -442,20 +495,3 @@ impl Default for ChannelConfig {
442495 LdkChannelConfig :: default ( ) . into ( )
443496 }
444497}
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