Mercurial > lbo > hg > localmr
changeset 7:f68ce3a86754
[formats] Add new_from_dir() function to writelog reader
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sat, 30 Jan 2016 21:49:57 +0000 |
parents | 29be98f95b18 |
children | bb148e9edb78 |
files | src/formats/writelog.rs src/util.rs |
diffstat | 2 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/formats/writelog.rs Sat Jan 30 21:31:21 2016 +0000 +++ b/src/formats/writelog.rs Sat Jan 30 21:49:57 2016 +0000 @@ -126,6 +126,27 @@ .map(move |f| WriteLogReader::new(Box::new(f))) } + /// Opens all files from a directory which end in suffix, and chains them together. + pub fn new_from_dir(path: &String, suffix: &String) -> io::Result<WriteLogReader> { + let mut reader: Box<Read> = Box::new(io::empty()); + let dir = try!(fs::read_dir(path)); + + for entry in dir { + let name; + match entry { + Err(e) => { println!("Error opening {}: {}", path, e); continue }, + Ok(direntry) => name = direntry.path() + } + if name.ends_with(suffix) { + match fs::OpenOptions::new().read(true).open(name.clone()) { + Err(e) => { println!("Error opening {:?}: {}", name, e); continue }, + Ok(f) => reader = Box::new(reader.chain(f)) + } + } + } + Ok(WriteLogReader{ src: reader, records_read: 0, bytes_read: 0 }) + } + pub fn get_stats(&self) -> (u32, usize) { (self.records_read, self.bytes_read) }