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)
     }
--- a/src/util.rs	Sat Jan 30 21:31:21 2016 +0000
+++ b/src/util.rs	Sat Jan 30 21:49:57 2016 +0000
@@ -1,4 +1,3 @@
-use std::convert::From;
 use mapreducer::Record;
 use std::fmt;