@@ -595,6 +595,61 @@ pub type SimpleArcChannelManager<M, T, F, L> = ChannelManager<
595
595
/// (C-not exported) as Arcs don't make sense in bindings
596
596
pub type SimpleRefChannelManager < ' a , ' b , ' c , ' d , ' e , ' f , ' g , ' h , M , T , F , L > = ChannelManager < & ' a M , & ' b T , & ' c KeysManager , & ' c KeysManager , & ' c KeysManager , & ' d F , & ' e DefaultRouter < & ' f NetworkGraph < & ' g L > , & ' g L , & ' h Mutex < ProbabilisticScorer < & ' f NetworkGraph < & ' g L > , & ' g L > > > , & ' g L > ;
597
597
598
+ /// A trivial trait which describes any [`ChannelManager`] used in testing.
599
+ #[ cfg( any( test, feature = "_test_utils" ) ) ]
600
+ pub trait AChannelManager {
601
+ type Watch : chain:: Watch < Self :: Signer > ;
602
+ type M : Deref < Target = Self :: Watch > ;
603
+ type Broadcaster : BroadcasterInterface ;
604
+ type T : Deref < Target = Self :: Broadcaster > ;
605
+ type EntropySource : EntropySource ;
606
+ type ES : Deref < Target = Self :: EntropySource > ;
607
+ type NodeSigner : NodeSigner ;
608
+ type NS : Deref < Target = Self :: NodeSigner > ;
609
+ type Signer : WriteableEcdsaChannelSigner ;
610
+ type SignerProvider : SignerProvider < Signer = Self :: Signer > ;
611
+ type SP : Deref < Target = Self :: SignerProvider > ;
612
+ type FeeEstimator : FeeEstimator ;
613
+ type F : Deref < Target = Self :: FeeEstimator > ;
614
+ type Router : Router ;
615
+ type R : Deref < Target = Self :: Router > ;
616
+ type Logger : Logger ;
617
+ type L : Deref < Target = Self :: Logger > ;
618
+ fn get_cm ( & self ) -> & ChannelManager < Self :: M , Self :: T , Self :: ES , Self :: NS , Self :: SP , Self :: F , Self :: R , Self :: L > ;
619
+ }
620
+ #[ cfg( any( test, feature = "_test_utils" ) ) ]
621
+ impl < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > AChannelManager
622
+ for ChannelManager < M , T , ES , NS , SP , F , R , L >
623
+ where
624
+ M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > + Sized ,
625
+ T :: Target : BroadcasterInterface + Sized ,
626
+ ES :: Target : EntropySource + Sized ,
627
+ NS :: Target : NodeSigner + Sized ,
628
+ SP :: Target : SignerProvider + Sized ,
629
+ F :: Target : FeeEstimator + Sized ,
630
+ R :: Target : Router + Sized ,
631
+ L :: Target : Logger + Sized ,
632
+ {
633
+ type Watch = M :: Target ;
634
+ type M = M ;
635
+ type Broadcaster = T :: Target ;
636
+ type T = T ;
637
+ type EntropySource = ES :: Target ;
638
+ type ES = ES ;
639
+ type NodeSigner = NS :: Target ;
640
+ type NS = NS ;
641
+ type Signer = <SP :: Target as SignerProvider >:: Signer ;
642
+ type SignerProvider = SP :: Target ;
643
+ type SP = SP ;
644
+ type FeeEstimator = F :: Target ;
645
+ type F = F ;
646
+ type Router = R :: Target ;
647
+ type R = R ;
648
+ type Logger = L :: Target ;
649
+ type L = L ;
650
+ fn get_cm ( & self ) -> & ChannelManager < M , T , ES , NS , SP , F , R , L > { self }
651
+ }
652
+
598
653
/// Manager which keeps track of a number of channels and sends messages to the appropriate
599
654
/// channel, also tracking HTLC preimages and forwarding onion packets appropriately.
600
655
///
@@ -8754,7 +8809,7 @@ pub mod bench {
8754
8809
use crate :: chain:: Listen ;
8755
8810
use crate :: chain:: chainmonitor:: { ChainMonitor , Persist } ;
8756
8811
use crate :: chain:: keysinterface:: { EntropySource , KeysManager , InMemorySigner } ;
8757
- use crate :: ln:: channelmanager:: { self , BestBlock , ChainParameters , ChannelManager , PaymentHash , PaymentPreimage , PaymentId } ;
8812
+ use crate :: ln:: channelmanager:: { BestBlock , ChainParameters , ChannelManager , PaymentHash , PaymentPreimage , PaymentId } ;
8758
8813
use crate :: ln:: functional_test_utils:: * ;
8759
8814
use crate :: ln:: msgs:: { ChannelMessageHandler , Init } ;
8760
8815
use crate :: routing:: gossip:: NetworkGraph ;
@@ -8771,14 +8826,24 @@ pub mod bench {
8771
8826
8772
8827
use test:: Bencher ;
8773
8828
8774
- struct NodeHolder < ' a , P : Persist < InMemorySigner > > {
8775
- node : & ' a ChannelManager <
8776
- & ' a ChainMonitor < InMemorySigner , & ' a test_utils:: TestChainSource ,
8777
- & ' a test_utils:: TestBroadcaster , & ' a test_utils:: TestFeeEstimator ,
8778
- & ' a test_utils:: TestLogger , & ' a P > ,
8779
- & ' a test_utils:: TestBroadcaster , & ' a KeysManager , & ' a KeysManager , & ' a KeysManager ,
8780
- & ' a test_utils:: TestFeeEstimator , & ' a test_utils:: TestRouter < ' a > ,
8781
- & ' a test_utils:: TestLogger > ,
8829
+ #[ allow( type_alias_bounds) ] // rustc warns us about unapplied bounds, but errors without...
8830
+ type Manager < ' a , P : Persist < InMemorySigner > > = ChannelManager <
8831
+ & ' a ChainMonitor < InMemorySigner , & ' a test_utils:: TestChainSource ,
8832
+ & ' a test_utils:: TestBroadcaster , & ' a test_utils:: TestFeeEstimator ,
8833
+ & ' a test_utils:: TestLogger , & ' a P > ,
8834
+ & ' a test_utils:: TestBroadcaster , & ' a KeysManager , & ' a KeysManager , & ' a KeysManager ,
8835
+ & ' a test_utils:: TestFeeEstimator , & ' a test_utils:: TestRouter < ' a > ,
8836
+ & ' a test_utils:: TestLogger > ;
8837
+
8838
+ struct ANodeHolder < ' a , P : Persist < InMemorySigner > > {
8839
+ node : & ' a Manager < ' a , P > ,
8840
+ }
8841
+ impl < ' a , P : Persist < InMemorySigner > > NodeHolder for ANodeHolder < ' a , P > {
8842
+ type CM = Manager < ' a , P > ;
8843
+ #[ inline]
8844
+ fn node ( & self ) -> & Manager < ' a , P > { self . node }
8845
+ #[ inline]
8846
+ fn chain_monitor ( & self ) -> Option < & test_utils:: TestChainMonitor > { None }
8782
8847
}
8783
8848
8784
8849
#[ cfg( test) ]
@@ -8809,7 +8874,7 @@ pub mod bench {
8809
8874
network,
8810
8875
best_block : BestBlock :: from_network ( network) ,
8811
8876
} ) ;
8812
- let node_a_holder = NodeHolder { node : & node_a } ;
8877
+ let node_a_holder = ANodeHolder { node : & node_a } ;
8813
8878
8814
8879
let logger_b = test_utils:: TestLogger :: with_id ( "node a" . to_owned ( ) ) ;
8815
8880
let chain_monitor_b = ChainMonitor :: new ( None , & tx_broadcaster, & logger_a, & fee_estimator, & persister_b) ;
@@ -8819,7 +8884,7 @@ pub mod bench {
8819
8884
network,
8820
8885
best_block : BestBlock :: from_network ( network) ,
8821
8886
} ) ;
8822
- let node_b_holder = NodeHolder { node : & node_b } ;
8887
+ let node_b_holder = ANodeHolder { node : & node_b } ;
8823
8888
8824
8889
node_a. peer_connected ( & node_b. get_our_node_id ( ) , & Init { features : node_b. init_features ( ) , remote_network_address : None } , true ) . unwrap ( ) ;
8825
8890
node_b. peer_connected ( & node_a. get_our_node_id ( ) , & Init { features : node_a. init_features ( ) , remote_network_address : None } , false ) . unwrap ( ) ;
@@ -8905,15 +8970,15 @@ pub mod bench {
8905
8970
let payment_event = SendEvent :: from_event( $node_a. get_and_clear_pending_msg_events( ) . pop( ) . unwrap( ) ) ;
8906
8971
$node_b. handle_update_add_htlc( & $node_a. get_our_node_id( ) , & payment_event. msgs[ 0 ] ) ;
8907
8972
$node_b. handle_commitment_signed( & $node_a. get_our_node_id( ) , & payment_event. commitment_msg) ;
8908
- let ( raa, cs) = do_get_revoke_commit_msgs! ( NodeHolder { node: & $node_b } , & $node_a. get_our_node_id( ) ) ;
8973
+ let ( raa, cs) = get_revoke_commit_msgs ( & ANodeHolder { node: & $node_b } , & $node_a. get_our_node_id( ) ) ;
8909
8974
$node_a. handle_revoke_and_ack( & $node_b. get_our_node_id( ) , & raa) ;
8910
8975
$node_a. handle_commitment_signed( & $node_b. get_our_node_id( ) , & cs) ;
8911
- $node_b. handle_revoke_and_ack( & $node_a. get_our_node_id( ) , & get_event_msg!( NodeHolder { node: & $node_a } , MessageSendEvent :: SendRevokeAndACK , $node_b. get_our_node_id( ) ) ) ;
8976
+ $node_b. handle_revoke_and_ack( & $node_a. get_our_node_id( ) , & get_event_msg!( ANodeHolder { node: & $node_a } , MessageSendEvent :: SendRevokeAndACK , $node_b. get_our_node_id( ) ) ) ;
8912
8977
8913
- expect_pending_htlcs_forwardable!( NodeHolder { node: & $node_b } ) ;
8914
- expect_payment_claimable!( NodeHolder { node: & $node_b } , payment_hash, payment_secret, 10_000 ) ;
8978
+ expect_pending_htlcs_forwardable!( ANodeHolder { node: & $node_b } ) ;
8979
+ expect_payment_claimable!( ANodeHolder { node: & $node_b } , payment_hash, payment_secret, 10_000 ) ;
8915
8980
$node_b. claim_funds( payment_preimage) ;
8916
- expect_payment_claimed!( NodeHolder { node: & $node_b } , payment_hash, 10_000 ) ;
8981
+ expect_payment_claimed!( ANodeHolder { node: & $node_b } , payment_hash, 10_000 ) ;
8917
8982
8918
8983
match $node_b. get_and_clear_pending_msg_events( ) . pop( ) . unwrap( ) {
8919
8984
MessageSendEvent :: UpdateHTLCs { node_id, updates } => {
@@ -8924,12 +8989,12 @@ pub mod bench {
8924
8989
_ => panic!( "Failed to generate claim event" ) ,
8925
8990
}
8926
8991
8927
- let ( raa, cs) = do_get_revoke_commit_msgs! ( NodeHolder { node: & $node_a } , & $node_b. get_our_node_id( ) ) ;
8992
+ let ( raa, cs) = get_revoke_commit_msgs ( & ANodeHolder { node: & $node_a } , & $node_b. get_our_node_id( ) ) ;
8928
8993
$node_b. handle_revoke_and_ack( & $node_a. get_our_node_id( ) , & raa) ;
8929
8994
$node_b. handle_commitment_signed( & $node_a. get_our_node_id( ) , & cs) ;
8930
- $node_a. handle_revoke_and_ack( & $node_b. get_our_node_id( ) , & get_event_msg!( NodeHolder { node: & $node_b } , MessageSendEvent :: SendRevokeAndACK , $node_a. get_our_node_id( ) ) ) ;
8995
+ $node_a. handle_revoke_and_ack( & $node_b. get_our_node_id( ) , & get_event_msg!( ANodeHolder { node: & $node_b } , MessageSendEvent :: SendRevokeAndACK , $node_a. get_our_node_id( ) ) ) ;
8931
8996
8932
- expect_payment_sent!( NodeHolder { node: & $node_a } , payment_preimage) ;
8997
+ expect_payment_sent!( ANodeHolder { node: & $node_a } , payment_preimage) ;
8933
8998
}
8934
8999
}
8935
9000
0 commit comments