#pragma once #include #include #include #include #include #include #include #include // #include #include "leveldb/db.h" #include "leveldb/filter_policy.h" #include "leveldb/write_batch.h" using std::string; using std::vector; using std::cin; using std::cout; using std::cerr; using std::endl; using std::stringstream; using leveldb::ReadOptions; using leveldb::Options; using leveldb::Status; using leveldb::WriteBatch; using leveldb::WriteOptions; using leveldb::DB; static bool leveldb_get(DB * db, string &key, string &value) { // assert(lldb); ReadOptions ropt; Status s = db->Get(ropt, key, &value); assert(s.ok()); if (s.IsNotFound()) { return false; } else { return true; } } static void leveldb_set(DB * db, string &key, string &value) { WriteBatch wb; Status s; WriteOptions wopt; wb.Put(key, value); s = db->Write(wopt, &wb); assert(s.ok()); } static void leveldb_del(DB * db, string &key) { WriteOptions wopt; Status s; s = db->Delete(wopt, key); assert(s.ok()); } static void destroy_leveldb(const string &dirname) { Options options; leveldb::DestroyDB(dirname, options); } static DB * open_leveldb(const string &dirname) { Options options; options.create_if_missing = true; options.filter_policy = leveldb::NewBloomFilterPolicy(10); options.write_buffer_size = 1u << 21; destroy_leveldb(dirname); DB * db = NULL; Status s = DB::Open(options, dirname, &db); return db; }