Fix bench build warning
[rust-lightning] / lightning-transaction-sync / src / common.rs
index a6ee61e90f268f620caab6c059b2badee58e69d9..be49fbe96ff017aa73d0c8e87265bb442b50fffc 100644 (file)
@@ -1,5 +1,6 @@
-use lightning::chain::WatchedOutput;
-use bitcoin::{Txid, BlockHash, Transaction, BlockHeader, OutPoint};
+use lightning::chain::{Confirm, WatchedOutput};
+use bitcoin::{Txid, BlockHash, Transaction, OutPoint};
+use bitcoin::block::Header;
 
 use std::collections::{HashSet, HashMap};
 
@@ -27,6 +28,39 @@ impl SyncState {
                        pending_sync: false,
                }
        }
+       pub fn sync_unconfirmed_transactions(
+               &mut self, confirmables: &Vec<&(dyn Confirm + Sync + Send)>,
+               unconfirmed_txs: Vec<Txid>,
+       ) {
+               for txid in unconfirmed_txs {
+                       for c in confirmables {
+                               c.transaction_unconfirmed(&txid);
+                       }
+
+                       self.watched_transactions.insert(txid);
+               }
+       }
+
+       pub fn sync_confirmed_transactions(
+               &mut self, confirmables: &Vec<&(dyn Confirm + Sync + Send)>,
+               confirmed_txs: Vec<ConfirmedTx>
+       ) {
+               for ctx in confirmed_txs {
+                       for c in confirmables {
+                               c.transactions_confirmed(
+                                       &ctx.block_header,
+                                       &[(ctx.pos, &ctx.tx)],
+                                       ctx.block_height,
+                               );
+                       }
+
+                       self.watched_transactions.remove(&ctx.tx.txid());
+
+                       for input in &ctx.tx.input {
+                               self.watched_outputs.remove(&input.previous_output);
+                       }
+               }
+       }
 }
 
 
@@ -67,9 +101,10 @@ impl FilterQueue {
        }
 }
 
+#[derive(Debug)]
 pub(crate) struct ConfirmedTx {
        pub tx: Transaction,
-       pub block_header: BlockHeader,
+       pub block_header: Header,
        pub block_height: u32,
        pub pos: usize,
 }