小组成员: 曹可心-10223903406 朴祉燕-10224602413
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

81 lines
1.5 KiB

#pragma once
#include <assert.h>
#include <vector>
#include <iostream>
#include <sstream>
#include <string>
#include <ctime>
#include <algorithm>
#include <cstdlib>
// #include <boost/algorithm/string.hpp>
#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;
}