@@ -23,7 +23,7 @@ use std::convert::TryFrom;
2323use std:: fmt:: Display ;
2424use std:: net:: { Ipv4Addr , Ipv6Addr , SocketAddr , SocketAddrV4 , SocketAddrV6 , ToSocketAddrs } ;
2525use std:: str:: FromStr ;
26- use std:: sync:: { Arc , Mutex } ;
26+ use std:: sync:: { Arc , Mutex , RwLock } ;
2727
2828pub ( crate ) type ChainMonitor < K > = chainmonitor:: ChainMonitor <
2929 InMemorySigner ,
@@ -397,44 +397,97 @@ impl Readable for NetAddress {
397397}
398398
399399/// Options which apply on a per-channel basis.
400+ ///
401+ /// See documentation of [`LdkChannelConfig`] for details.
402+ #[ derive( Debug ) ]
400403pub 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+ }
413480}
414481
415482impl From < LdkChannelConfig > for ChannelConfig {
416483 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) }
425485 }
426486}
427487
428488impl From < ChannelConfig > for LdkChannelConfig {
429489 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 ( )
438491 }
439492}
440493
@@ -443,20 +496,3 @@ impl Default for ChannelConfig {
443496 LdkChannelConfig :: default ( ) . into ( )
444497 }
445498}
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