changeset 160:28698cadc1de

Start TableCache implementation
author Lewin Bormann <lbo@spheniscida.de>
date Sun, 09 Jul 2017 20:34:55 +0200
parents 18e0fb2d6a4e
children 923d7cbdbb1e
files src/lib.rs src/table_cache.rs
diffstat 2 files changed, 44 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib.rs	Sun Jul 09 20:34:43 2017 +0200
+++ b/src/lib.rs	Sun Jul 09 20:34:55 2017 +0200
@@ -22,6 +22,7 @@
 mod skipmap;
 mod snapshot;
 mod table_builder;
+mod table_cache;
 mod table_reader;
 mod types;
 mod version_edit;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/table_cache.rs	Sun Jul 09 20:34:55 2017 +0200
@@ -0,0 +1,43 @@
+
+use cache::Cache;
+use env::RandomAccessFile;
+use options::Options;
+use table_reader::Table;
+
+const DEFAULT_SUFFIX: &str = "ldb";
+
+fn table_name(name: &str, num: usize, suff: &str) -> String {
+    assert!(num > 0);
+    format!("{}/{:06}.{}", name, num, suff)
+}
+
+struct TableAndFile {
+    file: Box<RandomAccessFile>,
+    table: Table,
+}
+
+pub struct TableCache {
+    dbname: String,
+    cache: Cache<TableAndFile>,
+    opts: Options,
+}
+
+impl TableCache {
+    pub fn new(db: &str, opt: Options, entries: usize) -> TableCache {
+        TableCache {
+            dbname: String::from(db),
+            cache: Cache::new(entries),
+            opts: opt,
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_table_name() {
+        assert_eq!("abc/000122.ldb", table_name("abc", 122, "ldb"));
+    }
+}