@@ -618,6 +618,61 @@ pub type SimpleArcChannelManager<M, T, F, L> = ChannelManager<
618
618
/// This is not exported to bindings users as Arcs don't make sense in bindings
619
619
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 > ;
620
620
621
+ /// A trivial trait which describes any [`ChannelManager`] used in testing.
622
+ #[ cfg( any( test, feature = "_test_utils" ) ) ]
623
+ pub trait AChannelManager {
624
+ type Watch : chain:: Watch < Self :: Signer > ;
625
+ type M : Deref < Target = Self :: Watch > ;
626
+ type Broadcaster : BroadcasterInterface ;
627
+ type T : Deref < Target = Self :: Broadcaster > ;
628
+ type EntropySource : EntropySource ;
629
+ type ES : Deref < Target = Self :: EntropySource > ;
630
+ type NodeSigner : NodeSigner ;
631
+ type NS : Deref < Target = Self :: NodeSigner > ;
632
+ type Signer : WriteableEcdsaChannelSigner ;
633
+ type SignerProvider : SignerProvider < Signer = Self :: Signer > ;
634
+ type SP : Deref < Target = Self :: SignerProvider > ;
635
+ type FeeEstimator : FeeEstimator ;
636
+ type F : Deref < Target = Self :: FeeEstimator > ;
637
+ type Router : Router ;
638
+ type R : Deref < Target = Self :: Router > ;
639
+ type Logger : Logger ;
640
+ type L : Deref < Target = Self :: Logger > ;
641
+ fn get_cm ( & self ) -> & ChannelManager < Self :: M , Self :: T , Self :: ES , Self :: NS , Self :: SP , Self :: F , Self :: R , Self :: L > ;
642
+ }
643
+ #[ cfg( any( test, feature = "_test_utils" ) ) ]
644
+ impl < M : Deref , T : Deref , ES : Deref , NS : Deref , SP : Deref , F : Deref , R : Deref , L : Deref > AChannelManager
645
+ for ChannelManager < M , T , ES , NS , SP , F , R , L >
646
+ where
647
+ M :: Target : chain:: Watch < <SP :: Target as SignerProvider >:: Signer > + Sized ,
648
+ T :: Target : BroadcasterInterface + Sized ,
649
+ ES :: Target : EntropySource + Sized ,
650
+ NS :: Target : NodeSigner + Sized ,
651
+ SP :: Target : SignerProvider + Sized ,
652
+ F :: Target : FeeEstimator + Sized ,
653
+ R :: Target : Router + Sized ,
654
+ L :: Target : Logger + Sized ,
655
+ {
656
+ type Watch = M :: Target ;
657
+ type M = M ;
658
+ type Broadcaster = T :: Target ;
659
+ type T = T ;
660
+ type EntropySource = ES :: Target ;
661
+ type ES = ES ;
662
+ type NodeSigner = NS :: Target ;
663
+ type NS = NS ;
664
+ type Signer = <SP :: Target as SignerProvider >:: Signer ;
665
+ type SignerProvider = SP :: Target ;
666
+ type SP = SP ;
667
+ type FeeEstimator = F :: Target ;
668
+ type F = F ;
669
+ type Router = R :: Target ;
670
+ type R = R ;
671
+ type Logger = L :: Target ;
672
+ type L = L ;
673
+ fn get_cm ( & self ) -> & ChannelManager < M , T , ES , NS , SP , F , R , L > { self }
674
+ }
675
+
621
676
/// Manager which keeps track of a number of channels and sends messages to the appropriate
622
677
/// channel, also tracking HTLC preimages and forwarding onion packets appropriately.
623
678
///
@@ -8839,14 +8894,23 @@ pub mod bench {
8839
8894
8840
8895
use test:: Bencher ;
8841
8896
8842
- struct NodeHolder < ' a , P : Persist < InMemorySigner > > {
8843
- node : & ' a ChannelManager <
8844
- & ' a ChainMonitor < InMemorySigner , & ' a test_utils:: TestChainSource ,
8845
- & ' a test_utils:: TestBroadcaster , & ' a test_utils:: TestFeeEstimator ,
8846
- & ' a test_utils:: TestLogger , & ' a P > ,
8847
- & ' a test_utils:: TestBroadcaster , & ' a KeysManager , & ' a KeysManager , & ' a KeysManager ,
8848
- & ' a test_utils:: TestFeeEstimator , & ' a test_utils:: TestRouter < ' a > ,
8849
- & ' a test_utils:: TestLogger > ,
8897
+ type Manager < ' a , P > = ChannelManager <
8898
+ & ' a ChainMonitor < InMemorySigner , & ' a test_utils:: TestChainSource ,
8899
+ & ' a test_utils:: TestBroadcaster , & ' a test_utils:: TestFeeEstimator ,
8900
+ & ' a test_utils:: TestLogger , & ' a P > ,
8901
+ & ' a test_utils:: TestBroadcaster , & ' a KeysManager , & ' a KeysManager , & ' a KeysManager ,
8902
+ & ' a test_utils:: TestFeeEstimator , & ' a test_utils:: TestRouter < ' a > ,
8903
+ & ' a test_utils:: TestLogger > ;
8904
+
8905
+ struct ANodeHolder < ' a , P : Persist < InMemorySigner > > {
8906
+ node : & ' a Manager < ' a , P > ,
8907
+ }
8908
+ impl < ' a , P : Persist < InMemorySigner > > NodeHolder for ANodeHolder < ' a , P > {
8909
+ type CM = Manager < ' a , P > ;
8910
+ #[ inline]
8911
+ fn node ( & self ) -> & Manager < ' a , P > { self . node }
8912
+ #[ inline]
8913
+ fn chain_monitor ( & self ) -> Option < & test_utils:: TestChainMonitor > { None }
8850
8914
}
8851
8915
8852
8916
#[ cfg( test) ]
@@ -8877,7 +8941,7 @@ pub mod bench {
8877
8941
network,
8878
8942
best_block : BestBlock :: from_network ( network) ,
8879
8943
} ) ;
8880
- let node_a_holder = NodeHolder { node : & node_a } ;
8944
+ let node_a_holder = ANodeHolder { node : & node_a } ;
8881
8945
8882
8946
let logger_b = test_utils:: TestLogger :: with_id ( "node a" . to_owned ( ) ) ;
8883
8947
let chain_monitor_b = ChainMonitor :: new ( None , & tx_broadcaster, & logger_a, & fee_estimator, & persister_b) ;
@@ -8887,7 +8951,7 @@ pub mod bench {
8887
8951
network,
8888
8952
best_block : BestBlock :: from_network ( network) ,
8889
8953
} ) ;
8890
- let node_b_holder = NodeHolder { node : & node_b } ;
8954
+ let node_b_holder = ANodeHolder { node : & node_b } ;
8891
8955
8892
8956
node_a. peer_connected ( & node_b. get_our_node_id ( ) , & Init { features : node_b. init_features ( ) , remote_network_address : None } , true ) . unwrap ( ) ;
8893
8957
node_b. peer_connected ( & node_a. get_our_node_id ( ) , & Init { features : node_a. init_features ( ) , remote_network_address : None } , false ) . unwrap ( ) ;
@@ -8983,15 +9047,15 @@ pub mod bench {
8983
9047
let payment_event = SendEvent :: from_event( $node_a. get_and_clear_pending_msg_events( ) . pop( ) . unwrap( ) ) ;
8984
9048
$node_b. handle_update_add_htlc( & $node_a. get_our_node_id( ) , & payment_event. msgs[ 0 ] ) ;
8985
9049
$node_b. handle_commitment_signed( & $node_a. get_our_node_id( ) , & payment_event. commitment_msg) ;
8986
- let ( raa, cs) = do_get_revoke_commit_msgs! ( NodeHolder { node: & $node_b } , & $node_a. get_our_node_id( ) ) ;
9050
+ let ( raa, cs) = get_revoke_commit_msgs ( & ANodeHolder { node: & $node_b } , & $node_a. get_our_node_id( ) ) ;
8987
9051
$node_a. handle_revoke_and_ack( & $node_b. get_our_node_id( ) , & raa) ;
8988
9052
$node_a. handle_commitment_signed( & $node_b. get_our_node_id( ) , & cs) ;
8989
- $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( ) ) ) ;
9053
+ $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( ) ) ) ;
8990
9054
8991
- expect_pending_htlcs_forwardable!( NodeHolder { node: & $node_b } ) ;
8992
- expect_payment_claimable!( NodeHolder { node: & $node_b } , payment_hash, payment_secret, 10_000 ) ;
9055
+ expect_pending_htlcs_forwardable!( ANodeHolder { node: & $node_b } ) ;
9056
+ expect_payment_claimable!( ANodeHolder { node: & $node_b } , payment_hash, payment_secret, 10_000 ) ;
8993
9057
$node_b. claim_funds( payment_preimage) ;
8994
- expect_payment_claimed!( NodeHolder { node: & $node_b } , payment_hash, 10_000 ) ;
9058
+ expect_payment_claimed!( ANodeHolder { node: & $node_b } , payment_hash, 10_000 ) ;
8995
9059
8996
9060
match $node_b. get_and_clear_pending_msg_events( ) . pop( ) . unwrap( ) {
8997
9061
MessageSendEvent :: UpdateHTLCs { node_id, updates } => {
@@ -9002,12 +9066,12 @@ pub mod bench {
9002
9066
_ => panic!( "Failed to generate claim event" ) ,
9003
9067
}
9004
9068
9005
- let ( raa, cs) = do_get_revoke_commit_msgs! ( NodeHolder { node: & $node_a } , & $node_b. get_our_node_id( ) ) ;
9069
+ let ( raa, cs) = get_revoke_commit_msgs ( & ANodeHolder { node: & $node_a } , & $node_b. get_our_node_id( ) ) ;
9006
9070
$node_b. handle_revoke_and_ack( & $node_a. get_our_node_id( ) , & raa) ;
9007
9071
$node_b. handle_commitment_signed( & $node_a. get_our_node_id( ) , & cs) ;
9008
- $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( ) ) ) ;
9072
+ $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( ) ) ) ;
9009
9073
9010
- expect_payment_sent!( NodeHolder { node: & $node_a } , payment_preimage) ;
9074
+ expect_payment_sent!( ANodeHolder { node: & $node_a } , payment_preimage) ;
9011
9075
}
9012
9076
}
9013
9077
0 commit comments