Remove InvoicePayer and replace with util methods

This commit is contained in:
Valentine Wallace 2023-02-02 20:08:00 -05:00
parent 760ab65dbd
commit b28bfd382b
No known key found for this signature in database
GPG key ID: FD3E106A2CE099B4
3 changed files with 243 additions and 2267 deletions

View file

@ -659,7 +659,7 @@ mod tests {
use bitcoin::secp256k1::{SecretKey, PublicKey, Secp256k1};
use lightning::chain::{BestBlock, Confirm, chainmonitor};
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
use lightning::chain::keysinterface::{InMemorySigner, EntropySource, KeysManager};
use lightning::chain::keysinterface::{InMemorySigner, KeysManager};
use lightning::chain::transaction::OutPoint;
use lightning::get_event_msg;
use lightning::ln::PaymentHash;
@ -676,7 +676,6 @@ mod tests {
use lightning::util::ser::Writeable;
use lightning::util::test_utils;
use lightning::util::persist::KVStorePersister;
use lightning_invoice::payment::{InvoicePayer, Retry};
use lightning_persister::FilesystemPersister;
use std::collections::VecDeque;
use std::fs;
@ -1326,22 +1325,6 @@ mod tests {
assert_eq!(network_graph.read_only().channels().len(), 0);
}
#[test]
fn test_invoice_payer() {
let keys_manager = test_utils::TestKeysInterface::new(&[0u8; 32], Network::Testnet);
let random_seed_bytes = keys_manager.get_secure_random_bytes();
let nodes = create_nodes(2, "test_invoice_payer".to_string());
// Initiate the background processors to watch each node.
let data_dir = nodes[0].persister.get_data_dir();
let persister = Arc::new(Persister::new(data_dir));
let router = Arc::new(DefaultRouter::new(Arc::clone(&nodes[0].network_graph), Arc::clone(&nodes[0].logger), random_seed_bytes, Arc::clone(&nodes[0].scorer)));
let invoice_payer = Arc::new(InvoicePayer::new(Arc::clone(&nodes[0].node), router, Arc::clone(&nodes[0].logger), |_: _| {}, Retry::Attempts(2)));
let event_handler = Arc::clone(&invoice_payer);
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
assert!(bg_processor.stop().is_ok());
}
#[test]
fn test_payment_path_scoring() {
// Ensure that we update the scorer when relevant events are processed. In this case, we ensure

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,6 @@
//! Convenient utilities to create an invoice.
use crate::{CreationError, Currency, Invoice, InvoiceBuilder, SignOrCreationError};
use crate::payment::Payer;
use crate::{prelude::*, Description, InvoiceDescription, Sha256};
use bech32::ToBase32;
@ -9,12 +8,12 @@ use bitcoin_hashes::Hash;
use lightning::chain;
use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator};
use lightning::chain::keysinterface::{Recipient, NodeSigner, SignerProvider, EntropySource};
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
use lightning::ln::channelmanager::{ChannelDetails, ChannelManager, PaymentId, PaymentSendFailure, MIN_FINAL_CLTV_EXPIRY_DELTA};
use lightning::ln::{PaymentHash, PaymentSecret};
use lightning::ln::channelmanager::{ChannelDetails, ChannelManager, MIN_FINAL_CLTV_EXPIRY_DELTA};
use lightning::ln::channelmanager::{PhantomRouteHints, MIN_CLTV_EXPIRY_DELTA};
use lightning::ln::inbound_payment::{create, create_from_hash, ExpandedKey};
use lightning::routing::gossip::RoutingFees;
use lightning::routing::router::{InFlightHtlcs, Route, RouteHint, RouteHintHop, Router};
use lightning::routing::router::{RouteHint, RouteHintHop, Router};
use lightning::util::logger::Logger;
use secp256k1::PublicKey;
use core::ops::Deref;
@ -634,51 +633,6 @@ fn filter_channels<L: Deref>(
.collect::<Vec<RouteHint>>()
}
impl<M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, L: Deref> Payer for ChannelManager<M, T, ES, NS, SP, F, R, L>
where
M::Target: chain::Watch<<SP::Target as SignerProvider>::Signer>,
T::Target: BroadcasterInterface,
ES::Target: EntropySource,
NS::Target: NodeSigner,
SP::Target: SignerProvider,
F::Target: FeeEstimator,
R::Target: Router,
L::Target: Logger,
{
fn node_id(&self) -> PublicKey {
self.get_our_node_id()
}
fn first_hops(&self) -> Vec<ChannelDetails> {
self.list_usable_channels()
}
fn send_payment(
&self, route: &Route, payment_hash: PaymentHash, payment_secret: &Option<PaymentSecret>,
payment_id: PaymentId
) -> Result<(), PaymentSendFailure> {
self.send_payment(route, payment_hash, payment_secret, payment_id)
}
fn send_spontaneous_payment(
&self, route: &Route, payment_preimage: PaymentPreimage, payment_id: PaymentId,
) -> Result<(), PaymentSendFailure> {
self.send_spontaneous_payment(route, Some(payment_preimage), payment_id).map(|_| ())
}
fn retry_payment(
&self, route: &Route, payment_id: PaymentId
) -> Result<(), PaymentSendFailure> {
self.retry_payment(route, payment_id)
}
fn abandon_payment(&self, payment_id: PaymentId) {
self.abandon_payment(payment_id)
}
fn inflight_htlcs(&self) -> InFlightHtlcs { self.compute_inflight_htlcs() }
}
#[cfg(test)]
mod test {
use core::time::Duration;