From 76694bfcf438088c9d74edc27840219623e0a88f Mon Sep 17 00:00:00 2001 From: Rob Walker Date: Tue, 6 Nov 2018 12:42:31 -0800 Subject: [PATCH] remove entry_writer.rs (#1720) --- src/bank.rs | 36 ---------------- src/entry_writer.rs | 102 -------------------------------------------- src/lib.rs | 1 - 3 files changed, 139 deletions(-) delete mode 100644 src/entry_writer.rs diff --git a/src/bank.rs b/src/bank.rs index b69e929ad9..baff2a06a5 100644 --- a/src/bank.rs +++ b/src/bank.rs @@ -1487,14 +1487,12 @@ mod tests { use budget_program::BudgetState; use entry::next_entry; use entry::Entry; - use entry_writer::{self, EntryWriter}; use hash::hash; use jsonrpc_macros::pubsub::{Subscriber, SubscriptionId}; use ledger; use signature::Keypair; use signature::{GenKeys, KeypairUtil}; use std; - use std::io::{BufReader, Cursor, Seek, SeekFrom}; use system_transaction::SystemTransaction; use tokio::prelude::{Async, Stream}; use transaction::Instruction; @@ -1915,40 +1913,6 @@ mod tests { assert_eq!(bank.last_id(), last_id); } - // Write the given entries to a file and then return a file iterator to them. - fn to_file_iter(entries: impl Iterator) -> impl Iterator { - let mut file = Cursor::new(vec![]); - EntryWriter::write_entries(&mut file, entries).unwrap(); - file.seek(SeekFrom::Start(0)).unwrap(); - - let reader = BufReader::new(file); - entry_writer::read_entries(reader).map(|x| x.unwrap()) - } - - #[test] - fn test_process_ledger_from_file() { - let (ledger, pubkey) = create_sample_ledger(1); - let ledger = to_file_iter(ledger); - - let bank = Bank::default(); - bank.process_ledger(ledger).unwrap(); - assert_eq!(bank.get_balance(&pubkey), 1); - } - - #[test] - fn test_process_ledger_from_files() { - let dummy_leader_id = Keypair::new().pubkey(); - let dummy_leader_tokens = 1; - let mint = Mint::new_with_leader(2, dummy_leader_id, dummy_leader_tokens); - - let genesis = to_file_iter(mint.create_entries().into_iter()); - let block = to_file_iter(create_sample_block_with_ticks(&mint, 1, 1)); - - let bank = Bank::default(); - bank.process_ledger(genesis.chain(block)).unwrap(); - assert_eq!(bank.get_balance(&mint.pubkey()), 0); - } - #[test] fn test_hash_internal_state() { let dummy_leader_id = Keypair::new().pubkey(); diff --git a/src/entry_writer.rs b/src/entry_writer.rs deleted file mode 100644 index 851da94c2b..0000000000 --- a/src/entry_writer.rs +++ /dev/null @@ -1,102 +0,0 @@ -//! The `entry_writer` module helps implement the TPU's write stage. It -//! writes entries to the given writer, which is typically a file or -//! stdout, and then sends the Entry to its output channel. - -use bincode; -use entry::Entry; -use std::io::{self, BufRead, Error, ErrorKind, Write}; -use std::mem::size_of; - -pub struct EntryWriter {} - -impl EntryWriter { - fn write_entry(writer: &mut W, entry: &Entry) -> io::Result<()> { - let entry_bytes = - bincode::serialize(&entry).map_err(|e| Error::new(ErrorKind::Other, e.to_string()))?; - - let len = entry_bytes.len(); - let len_bytes = - bincode::serialize(&len).map_err(|e| Error::new(ErrorKind::Other, e.to_string()))?; - - writer.write_all(&len_bytes[..])?; - writer.write_all(&entry_bytes[..])?; - writer.flush() - } - - pub fn write_entries(writer: &mut W, entries: I) -> io::Result<()> - where - I: IntoIterator, - { - for entry in entries { - Self::write_entry(writer, &entry)?; - } - Ok(()) - } -} - -struct EntryReader { - reader: R, - entry_bytes: Vec, -} - -impl Iterator for EntryReader { - type Item = io::Result; - - fn next(&mut self) -> Option> { - let mut entry_len_bytes = [0u8; size_of::()]; - - if self.reader.read_exact(&mut entry_len_bytes[..]).is_ok() { - let entry_len = bincode::deserialize(&entry_len_bytes).unwrap(); - - if entry_len > self.entry_bytes.len() { - self.entry_bytes.resize(entry_len, 0); - } - - if let Err(e) = self.reader.read_exact(&mut self.entry_bytes[..entry_len]) { - Some(Err(e)) - } else { - Some( - bincode::deserialize(&self.entry_bytes) - .map_err(|e| Error::new(ErrorKind::Other, e.to_string())), - ) - } - } else { - None // EOF (probably) - } - } -} - -/// Return an iterator for all the entries in the given file. -pub fn read_entries(reader: R) -> impl Iterator> { - EntryReader { - reader, - entry_bytes: Vec::new(), - } -} - -#[cfg(test)] -mod tests { - use super::*; - use mint::Mint; - use std::io::Cursor; - - /// Same as read_entries() but parsing a buffer and returning a vector. - fn read_entries_from_buf(s: &[u8]) -> io::Result> { - let mut result = vec![]; - let reader = Cursor::new(s); - for x in read_entries(reader) { - trace!("entry... {:?}", x); - result.push(x?); - } - Ok(result) - } - - #[test] - fn test_read_entries_from_buf() { - let mint = Mint::new(1); - let mut buf = vec![]; - EntryWriter::write_entries(&mut buf, mint.create_entries()).unwrap(); - let entries = read_entries_from_buf(&buf).unwrap(); - assert_eq!(entries, mint.create_entries()); - } -} diff --git a/src/lib.rs b/src/lib.rs index 5bde2c9291..7f2daa5b7d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,7 +29,6 @@ pub mod budget_program; pub mod compute_leader_finality_service; pub mod drone; pub mod entry; -pub mod entry_writer; #[cfg(feature = "erasure")] pub mod erasure; pub mod fetch_stage;