@@ -49,6 +49,7 @@ use crate::events::{self, Event, EventHandler, EventsProvider, InboundChannelFun
49
49
// construct one themselves.
50
50
use crate::ln::inbound_payment;
51
51
use crate::ln::types::ChannelId;
52
+ use crate::offers::flow::OffersMessageFlow;
52
53
use crate::types::payment::{PaymentHash, PaymentPreimage, PaymentSecret};
53
54
use crate::ln::channel::{self, Channel, ChannelError, ChannelUpdateStatus, FundedChannel, ShutdownResult, UpdateFulfillCommitFetch, OutboundV1Channel, ReconnectionMsg, InboundV1Channel, WithChannelContext};
54
55
use crate::ln::channel::PendingV2Channel;
@@ -1718,6 +1719,7 @@ where
1718
1719
/// # tx_broadcaster: &dyn lightning::chain::chaininterface::BroadcasterInterface,
1719
1720
/// # router: &lightning::routing::router::DefaultRouter<&NetworkGraph<&'a L>, &'a L, &ES, &S, SP, SL>,
1720
1721
/// # message_router: &lightning::onion_message::messenger::DefaultMessageRouter<&NetworkGraph<&'a L>, &'a L, &ES>,
1722
+ /// flow: lightning::offers::flow::OffersMessageFlow<&ES,&lightning::onion_message::messenger::DefaultMessageRouter<&NetworkGraph<&'a L>, &'a L, &ES>, &lightning::routing::router::DefaultRouter<&NetworkGraph<&'a L>, &'a L, &ES, &S, SP, SL>>,
1721
1723
/// # logger: &L,
1722
1724
/// # entropy_source: &ES,
1723
1725
/// # node_signer: &dyn lightning::sign::NodeSigner,
@@ -1733,7 +1735,7 @@ where
1733
1735
/// };
1734
1736
/// let default_config = UserConfig::default();
1735
1737
/// let channel_manager = ChannelManager::new(
1736
- /// fee_estimator, chain_monitor, tx_broadcaster, router, message_router, logger,
1738
+ /// fee_estimator, chain_monitor, tx_broadcaster, router, message_router, flow, logger,
1737
1739
/// entropy_source, node_signer, signer_provider, default_config.clone(), params, current_timestamp,
1738
1740
/// );
1739
1741
///
@@ -2445,6 +2447,11 @@ where
2445
2447
router: R,
2446
2448
message_router: MR,
2447
2449
2450
+ #[cfg(test)]
2451
+ pub(super) flow: OffersMessageFlow<ES, MR, R>,
2452
+ #[cfg(not(test))]
2453
+ flow: OffersMessageFlow<ES, MR, R>,
2454
+
2448
2455
/// See `ChannelManager` struct-level documentation for lock order requirements.
2449
2456
#[cfg(any(test, feature = "_test_utils"))]
2450
2457
pub(super) best_block: RwLock<BestBlock>,
@@ -3540,8 +3547,8 @@ where
3540
3547
/// [`block_disconnected`]: chain::Listen::block_disconnected
3541
3548
/// [`params.best_block.block_hash`]: chain::BestBlock::block_hash
3542
3549
pub fn new(
3543
- fee_est: F, chain_monitor: M, tx_broadcaster: T, router: R, message_router: MR, logger: L ,
3544
- entropy_source: ES, node_signer: NS, signer_provider: SP, config: UserConfig,
3550
+ fee_est: F, chain_monitor: M, tx_broadcaster: T, router: R, message_router: MR, flow: OffersMessageFlow<ES, MR, R> ,
3551
+ logger: L, entropy_source: ES, node_signer: NS, signer_provider: SP, config: UserConfig,
3545
3552
params: ChainParameters, current_timestamp: u32,
3546
3553
) -> Self {
3547
3554
let mut secp_ctx = Secp256k1::new();
@@ -3555,6 +3562,7 @@ where
3555
3562
tx_broadcaster,
3556
3563
router,
3557
3564
message_router,
3565
+ flow,
3558
3566
3559
3567
best_block: RwLock::new(params.best_block),
3560
3568
@@ -13602,7 +13610,7 @@ impl Readable for VecDeque<(Event, Option<EventCompletionAction>)> {
13602
13610
/// which you've already broadcasted the transaction.
13603
13611
///
13604
13612
/// [`ChainMonitor`]: crate::chain::chainmonitor::ChainMonitor
13605
- pub struct ChannelManagerReadArgs<'a, M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
13613
+ pub struct ChannelManagerReadArgs<'a, M: Deref, T: Deref, ES: Deref + Clone , NS: Deref, SP: Deref, F: Deref, R: Deref + Clone , MR: Deref + Clone , L: Deref>
13606
13614
where
13607
13615
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
13608
13616
T::Target: BroadcasterInterface,
@@ -13648,6 +13656,7 @@ where
13648
13656
/// The [`MessageRouter`] used for constructing [`BlindedMessagePath`]s for [`Offer`]s,
13649
13657
/// [`Refund`]s, and any reply paths.
13650
13658
pub message_router: MR,
13659
+
13651
13660
/// The Logger for use in the ChannelManager and which may be used to log information during
13652
13661
/// deserialization.
13653
13662
pub logger: L,
@@ -13669,7 +13678,7 @@ where
13669
13678
pub channel_monitors: HashMap<ChannelId, &'a ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>>,
13670
13679
}
13671
13680
13672
- impl<'a, M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
13681
+ impl<'a, M: Deref, T: Deref, ES: Deref + Clone , NS: Deref, SP: Deref, F: Deref, R: Deref + Clone , MR: Deref + Clone , L: Deref>
13673
13682
ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>
13674
13683
where
13675
13684
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
@@ -13703,7 +13712,7 @@ where
13703
13712
13704
13713
// Implement ReadableArgs for an Arc'd ChannelManager to make it a bit easier to work with the
13705
13714
// SipmleArcChannelManager type:
13706
- impl<'a, M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
13715
+ impl<'a, M: Deref, T: Deref, ES: Deref + Clone , NS: Deref, SP: Deref, F: Deref, R: Deref + Clone , MR: Deref + Clone , L: Deref>
13707
13716
ReadableArgs<ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>> for (BlockHash, Arc<ChannelManager<M, T, ES, NS, SP, F, R, MR, L>>)
13708
13717
where
13709
13718
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
@@ -13722,7 +13731,7 @@ where
13722
13731
}
13723
13732
}
13724
13733
13725
- impl<'a, M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
13734
+ impl<'a, M: Deref, T: Deref, ES: Deref + Clone , NS: Deref, SP: Deref, F: Deref, R: Deref + Clone , MR: Deref + Clone , L: Deref>
13726
13735
ReadableArgs<ChannelManagerReadArgs<'a, M, T, ES, NS, SP, F, R, MR, L>> for (BlockHash, ChannelManager<M, T, ES, NS, SP, F, R, MR, L>)
13727
13736
where
13728
13737
M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
@@ -14704,15 +14713,19 @@ where
14704
14713
}
14705
14714
}
14706
14715
14716
+ let best_block = BestBlock::new(best_block_hash, best_block_height);
14717
+ let flow = OffersMessageFlow::new(chain_hash, best_block, our_network_pubkey, highest_seen_timestamp, expanded_inbound_key, args.entropy_source.clone(), args.message_router.clone(), args.router.clone());
14718
+
14707
14719
let channel_manager = ChannelManager {
14708
14720
chain_hash,
14709
14721
fee_estimator: bounded_fee_estimator,
14710
14722
chain_monitor: args.chain_monitor,
14711
14723
tx_broadcaster: args.tx_broadcaster,
14712
14724
router: args.router,
14713
14725
message_router: args.message_router,
14726
+ flow,
14714
14727
14715
- best_block: RwLock::new(BestBlock::new(best_block_hash, best_block_height) ),
14728
+ best_block: RwLock::new(best_block ),
14716
14729
14717
14730
inbound_payment_key: expanded_inbound_key,
14718
14731
pending_outbound_payments: pending_outbounds,
0 commit comments