let new_monitor = <(Sha256dHash, channelmonitor::ChannelMonitor<EnforcingChannelKeys>)>::read(
&mut ::std::io::Cursor::new(&w.0), Arc::new(TestLogger::new())).unwrap().1;
assert!(new_monitor == monitor);
- w.0.clear();
- monitor.write_for_watchtower(&mut w).unwrap(); // This at least shouldn't crash...
self.latest_monitor_update_id.lock().unwrap().insert(funding_txo.to_channel_id(), (funding_txo, monitor.get_latest_update_id()));
self.added_monitors.lock().unwrap().push((funding_txo, monitor));
assert!(self.simple_monitor.add_monitor(funding_txo, new_monitor).is_ok());
let new_monitor = <(Sha256dHash, channelmonitor::ChannelMonitor<EnforcingChannelKeys>)>::read(
&mut ::std::io::Cursor::new(&w.0), Arc::new(TestLogger::new())).unwrap().1;
assert!(new_monitor == *monitor);
- w.0.clear();
- monitor.write_for_watchtower(&mut w).unwrap(); // This at least shouldn't crash...
self.added_monitors.lock().unwrap().push((funding_txo, new_monitor));
self.update_ret.lock().unwrap().clone()
}
pub struct TestBroadcaster {
pub txn_broadcasted: Mutex<Vec<Transaction>>,
- pub broadcasted_txn: Mutex<HashMap<Sha256dHash, u8>> // Temporary field while refactoring out tx duplication
}
impl chaininterface::BroadcasterInterface for TestBroadcaster {
fn broadcast_transaction(&self, tx: &Transaction) {
- let mut already = false;
- {
- if let Some(counter) = self.broadcasted_txn.lock().unwrap().get_mut(&tx.txid()) {
- match counter {
- 0 => { *counter = 1; already = true }, // We still authorize at least 2 duplicata for a given TXID to account ChannelManager/ChannelMonitor broadcast
- 1 => return,
- _ => panic!()
- }
- }
- }
- if !already {
- self.broadcasted_txn.lock().unwrap().insert(tx.txid(), 0);
- }
- print!("\nFRESH BROADCAST {}\n\n", tx.txid());
self.txn_broadcasted.lock().unwrap().push(tx.clone());
}
}