async fn handle_ldk_events(
channel_manager: Arc<ChannelManager>, bitcoind_client: Arc<BitcoindClient>,
keys_manager: Arc<KeysManager>, inbound_payments: PaymentInfoStorage,
- outbound_payments: PaymentInfoStorage, network: Network, event: Event,
+ outbound_payments: PaymentInfoStorage, network: Network, event: &Event,
) {
match event {
Event::FundingGenerationReady {
.expect("Lightning funding tx should always be to a SegWit output")
.to_address();
let mut outputs = vec![HashMap::with_capacity(1)];
- outputs[0].insert(addr, channel_value_satoshis as f64 / 100_000_000.0);
+ outputs[0].insert(addr, *channel_value_satoshis as f64 / 100_000_000.0);
let raw_tx = bitcoind_client.create_raw_transaction(outputs).await;
// Have your wallet put the inputs into the transaction such that the output is
let mut payments = inbound_payments.lock().unwrap();
let (payment_preimage, payment_secret) = match purpose {
PaymentPurpose::InvoicePayment { payment_preimage, payment_secret, .. } => {
- (payment_preimage, Some(payment_secret))
+ (payment_preimage.map(|a| a), Some(payment_secret))
}
- PaymentPurpose::SpontaneousPayment(preimage) => (Some(preimage), None),
+ PaymentPurpose::SpontaneousPayment(preimage) => (Some(*preimage), None),
};
let status = match channel_manager.claim_funds(payment_preimage.unwrap()) {
true => {
}
_ => HTLCStatus::Failed,
};
- match payments.entry(payment_hash) {
+ match payments.entry(*payment_hash) {
Entry::Occupied(mut e) => {
let payment = e.get_mut();
payment.status = status;
payment.preimage = payment_preimage;
- payment.secret = payment_secret;
+ payment.secret = payment_secret.map(|a| *a);
}
Entry::Vacant(e) => {
e.insert(PaymentInfo {
preimage: payment_preimage,
- secret: payment_secret,
+ secret: payment_secret.map(|a| *a),
status,
- amt_msat: MillisatAmount(Some(amt)),
+ amt_msat: MillisatAmount(Some(*amt)),
});
}
}
let mut payments = outbound_payments.lock().unwrap();
for (payment_hash, payment) in payments.iter_mut() {
if *payment_hash == hashed {
- payment.preimage = Some(payment_preimage);
+ payment.preimage = Some(*payment_preimage);
payment.status = HTLCStatus::Succeeded;
println!(
"\nEVENT: successfully sent payment of {} millisatoshis from \
"\nEVENT: Failed to send payment to payment hash {:?}: ",
hex_utils::hex_str(&payment_hash.0)
);
- if rejected_by_dest {
+ if *rejected_by_dest {
println!("re-attempting the payment will not succeed");
} else {
println!("payment may be retried");
}
}
Event::PaymentForwarded { fee_earned_msat, claim_from_onchain_tx } => {
- let from_onchain_str = if claim_from_onchain_tx {
+ let from_onchain_str = if *claim_from_onchain_tx {
"from onchain downstream claim"
} else {
"from HTLC fulfill message"
}
Event::PendingHTLCsForwardable { time_forwardable } => {
let forwarding_channel_manager = channel_manager.clone();
+ let min = time_forwardable.as_millis() as u64;
tokio::spawn(async move {
- let min = time_forwardable.as_millis() as u64;
let millis_to_sleep = thread_rng().gen_range(min, min * 5) as u64;
tokio::time::sleep(Duration::from_millis(millis_to_sleep)).await;
forwarding_channel_manager.process_pending_htlc_forwards();
inbound_pmts_for_events.clone(),
outbound_pmts_for_events.clone(),
network,
- event.clone(),
+ event,
))
};
// Step 16: Persist ChannelManager