@@ -16,6 +16,7 @@ use crate::chain::transaction::OutPoint;
16
16
use crate :: events:: { ClaimedHTLC , ClosureReason , Event , HTLCDestination , MessageSendEvent , MessageSendEventsProvider , PathFailure , PaymentPurpose , PaymentFailureReason } ;
17
17
use crate :: events:: bump_transaction:: { BumpTransactionEvent , BumpTransactionEventHandler , Wallet , WalletSource } ;
18
18
use crate :: ln:: types:: ChannelId ;
19
+ use crate :: offers:: flow:: OffersMessageFlow ;
19
20
use crate :: types:: payment:: { PaymentPreimage , PaymentHash , PaymentSecret } ;
20
21
use crate :: ln:: channelmanager:: { AChannelManager , ChainParameters , ChannelManager , ChannelManagerReadArgs , OffersMessageCommons , PaymentId , PaymentSendFailure , RAACommitmentOrder , RecipientOnionFields , MIN_CLTV_EXPIRY_DELTA } ;
21
22
use crate :: types:: features:: InitFeatures ;
@@ -408,14 +409,21 @@ type TestChannelManager<'node_cfg, 'chan_mon_cfg> = ChannelManager<
408
409
& ' chan_mon_cfg test_utils:: TestLogger ,
409
410
> ;
410
411
412
+ pub type TestOffersMessageFlow < ' chan_man , ' node_cfg , ' chan_mon_cfg > = OffersMessageFlow <
413
+ & ' node_cfg test_utils:: TestKeysInterface ,
414
+ & ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
415
+ & ' node_cfg test_utils:: TestKeysInterface ,
416
+ & ' chan_mon_cfg test_utils:: TestLogger ,
417
+ > ;
418
+
411
419
#[ cfg( not( feature = "dnssec" ) ) ]
412
420
type TestOnionMessenger < ' chan_man , ' node_cfg , ' chan_mon_cfg > = OnionMessenger <
413
421
DedicatedEntropy ,
414
422
& ' node_cfg test_utils:: TestKeysInterface ,
415
423
& ' chan_mon_cfg test_utils:: TestLogger ,
416
424
& ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
417
425
& ' node_cfg test_utils:: TestMessageRouter < ' chan_mon_cfg > ,
418
- & ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
426
+ Arc < TestOffersMessageFlow < ' chan_man , ' node_cfg , ' chan_mon_cfg > > ,
419
427
& ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
420
428
IgnoringMessageHandler ,
421
429
IgnoringMessageHandler ,
@@ -428,7 +436,7 @@ type TestOnionMessenger<'chan_man, 'node_cfg, 'chan_mon_cfg> = OnionMessenger<
428
436
& ' chan_mon_cfg test_utils:: TestLogger ,
429
437
& ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
430
438
& ' node_cfg test_utils:: TestMessageRouter < ' chan_mon_cfg > ,
431
- & ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
439
+ Arc < TestOffersMessageFlow < ' chan_man , ' node_cfg , ' chan_mon_cfg > > ,
432
440
& ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
433
441
& ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
434
442
IgnoringMessageHandler ,
@@ -455,6 +463,7 @@ pub struct Node<'chan_man, 'node_cfg: 'chan_man, 'chan_mon_cfg: 'node_cfg> {
455
463
pub keys_manager : & ' chan_mon_cfg test_utils:: TestKeysInterface ,
456
464
pub node : & ' chan_man TestChannelManager < ' node_cfg , ' chan_mon_cfg > ,
457
465
pub onion_messenger : TestOnionMessenger < ' chan_man , ' node_cfg , ' chan_mon_cfg > ,
466
+ pub offers_handler : Arc < TestOffersMessageFlow < ' chan_man , ' node_cfg , ' chan_mon_cfg > > ,
458
467
pub network_graph : & ' node_cfg NetworkGraph < & ' chan_mon_cfg test_utils:: TestLogger > ,
459
468
pub gossip_sync : P2PGossipSync < & ' node_cfg NetworkGraph < & ' chan_mon_cfg test_utils:: TestLogger > , & ' chan_mon_cfg test_utils:: TestChainSource , & ' chan_mon_cfg test_utils:: TestLogger > ,
460
469
pub node_seed : [ u8 ; 32 ] ,
@@ -1181,8 +1190,14 @@ macro_rules! reload_node {
1181
1190
$node. chain_monitor = & $new_chain_monitor;
1182
1191
1183
1192
$new_channelmanager = _reload_node( & $node, $new_config, & chanman_encoded, $monitors_encoded) ;
1193
+
1194
+ let offers_handler = $crate:: sync:: Arc :: new( $crate:: offers:: flow:: OffersMessageFlow :: new(
1195
+ $node. keys_manager, & $new_channelmanager, $node. keys_manager, $node. logger
1196
+ ) ) ;
1197
+
1184
1198
$node. node = & $new_channelmanager;
1185
- $node. onion_messenger. set_offers_handler( & $new_channelmanager) ;
1199
+ $node. offers_handler = offers_handler. clone( ) ;
1200
+ $node. onion_messenger. set_offers_handler( offers_handler) ;
1186
1201
} ;
1187
1202
( $node: expr, $chanman_encoded: expr, $monitors_encoded: expr, $persister: ident, $new_chain_monitor: ident, $new_channelmanager: ident) => {
1188
1203
reload_node!( $node, $crate:: util:: config:: UserConfig :: default ( ) , $chanman_encoded, $monitors_encoded, $persister, $new_chain_monitor, $new_channelmanager) ;
@@ -3308,16 +3323,19 @@ pub fn create_network<'a, 'b: 'a, 'c: 'b>(node_count: usize, cfgs: &'b Vec<NodeC
3308
3323
3309
3324
for i in 0 ..node_count {
3310
3325
let dedicated_entropy = DedicatedEntropy ( RandomBytes :: new ( [ i as u8 ; 32 ] ) ) ;
3326
+ let offers_handler = Arc :: new ( OffersMessageFlow :: new (
3327
+ cfgs[ i] . keys_manager , & chan_mgrs[ i] , cfgs[ i] . keys_manager , cfgs[ i] . logger
3328
+ ) ) ;
3311
3329
#[ cfg( feature = "dnssec" ) ]
3312
3330
let onion_messenger = OnionMessenger :: new (
3313
3331
dedicated_entropy, cfgs[ i] . keys_manager , cfgs[ i] . logger , & chan_mgrs[ i] ,
3314
- & cfgs[ i] . message_router , & chan_mgrs [ i ] , & chan_mgrs[ i] , & chan_mgrs[ i] ,
3332
+ & cfgs[ i] . message_router , offers_handler . clone ( ) , & chan_mgrs[ i] , & chan_mgrs[ i] ,
3315
3333
IgnoringMessageHandler { } ,
3316
3334
) ;
3317
3335
#[ cfg( not( feature = "dnssec" ) ) ]
3318
3336
let onion_messenger = OnionMessenger :: new (
3319
3337
dedicated_entropy, cfgs[ i] . keys_manager , cfgs[ i] . logger , & chan_mgrs[ i] ,
3320
- & cfgs[ i] . message_router , & chan_mgrs [ i ] , & chan_mgrs[ i] , IgnoringMessageHandler { } ,
3338
+ & cfgs[ i] . message_router , offers_handler . clone ( ) , & chan_mgrs[ i] , IgnoringMessageHandler { } ,
3321
3339
IgnoringMessageHandler { } ,
3322
3340
) ;
3323
3341
let gossip_sync = P2PGossipSync :: new ( cfgs[ i] . network_graph . as_ref ( ) , None , cfgs[ i] . logger ) ;
@@ -3328,7 +3346,8 @@ pub fn create_network<'a, 'b: 'a, 'c: 'b>(node_count: usize, cfgs: &'b Vec<NodeC
3328
3346
message_router : & cfgs[ i] . message_router , chain_monitor : & cfgs[ i] . chain_monitor ,
3329
3347
keys_manager : & cfgs[ i] . keys_manager , node : & chan_mgrs[ i] ,
3330
3348
network_graph : cfgs[ i] . network_graph . as_ref ( ) , gossip_sync,
3331
- node_seed : cfgs[ i] . node_seed , onion_messenger, network_chan_count : chan_count. clone ( ) ,
3349
+ node_seed : cfgs[ i] . node_seed , onion_messenger, offers_handler,
3350
+ network_chan_count : chan_count. clone ( ) ,
3332
3351
network_payment_count : payment_count. clone ( ) , logger : cfgs[ i] . logger ,
3333
3352
blocks : Arc :: clone ( & cfgs[ i] . tx_broadcaster . blocks ) ,
3334
3353
connect_style : Rc :: clone ( & connect_style) ,
0 commit comments