Add a way of sending a batch of events

This commit is contained in:
Greg Fitzgerald
2018-05-09 08:05:40 -06:00
parent b3d732a1a1
commit d9079de262

View File

@ -16,6 +16,7 @@ use std::time::{Duration, Instant};
pub enum Signal { pub enum Signal {
Tick, Tick,
Event(Event), Event(Event),
Events(Vec<Event>),
} }
#[derive(Debug, PartialEq, Eq)] #[derive(Debug, PartialEq, Eq)]
@ -80,6 +81,10 @@ impl Recorder {
Signal::Event(event) => { Signal::Event(event) => {
self.events.push(event); self.events.push(event);
} }
Signal::Events(events) => {
self.events.extend(events);
self.record_entry()?;
}
}, },
Err(TryRecvError::Empty) => return Ok(()), Err(TryRecvError::Empty) => return Ok(()),
Err(TryRecvError::Disconnected) => return Err(ExitReason::RecvDisconnected), Err(TryRecvError::Disconnected) => return Err(ExitReason::RecvDisconnected),
@ -88,31 +93,30 @@ impl Recorder {
} }
} }
//#[cfg(test)] #[cfg(test)]
//mod tests { mod tests {
// use super::*; use super::*;
// use bincode::serialize; use signature::{KeyPair, KeyPairUtil};
// use signature::{KeyPair, KeyPairUtil}; use std::sync::mpsc::sync_channel;
// use std::sync::mpsc::sync_channel; use transaction::Transaction;
// use transaction::Transaction;
// #[test]
// #[test] fn test_events() {
// fn test_events() { let (signal_sender, signal_receiver) = sync_channel(500);
// let (signal_sender, signal_receiver) = sync_channel(500); let (entry_sender, entry_receiver) = sync_channel(10);
// let (entry_sender, entry_receiver) = sync_channel(10); let zero = Hash::default();
// let zero = Hash::default(); let mut recorder = Recorder::new(signal_receiver, entry_sender, zero);
// let mut recorder = Recorder::new(signal_receiver, entry_sender, zero); let alice_keypair = KeyPair::new();
// let alice_keypair = KeyPair::new(); let bob_pubkey = KeyPair::new().pubkey();
// let bob_pubkey = KeyPair::new().pubkey(); let event0 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 1, zero));
// let event0 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 1, zero)); let event1 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 2, zero));
// let event1 = Event::Transaction(Transaction::new(&alice_keypair, bob_pubkey, 2, zero)); signal_sender
// signal_sender .send(Signal::Events(vec![event0, event1]))
// .send(Signal::Events(vec![event0, event1])) .unwrap();
// .unwrap(); recorder.process_events(Instant::now(), None).unwrap();
// recorder.process_events(Instant::now(), None).unwrap();
// drop(recorder.sender);
// drop(recorder.sender); let entries: Vec<_> = entry_receiver.iter().collect();
// let entries: Vec<_> = entry_receiver.iter().collect(); assert_eq!(entries.len(), 1);
// assert_eq!(entries.len(), 1); }
// } }
//}