10225501448 李度 10225101546 陈胤遒 10215501422 高宇菲
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 

112 lignes
3.1 KiB

#include "testdb/testdb.h"
#include "db/db_impl.h"
#include <memory>
#include "leveldb/status.h"
#include "testdb.h"
using namespace testdb;
Status testDB::OpentestDB(Options& options,
const std::string& name, testDB** dbptr) {
// options.env->CreateDir("./abc")
if(*dbptr == nullptr){
return Status::NotSupported(name, "new a testDb first\n");
}
//
Status status;
DB *indexdb, *kvdb, *metadb;
// options.block_cache = NewLRUCache(ULONG_MAX);
// options.max_open_files = 1000;
// options.write_buffer_size = 512 * 1024 * 1024;
// options.env = getPosixEnv();
// status = Open(options, name+"_indexDB", &indexdb);
// if(!status.ok()) return status;
// (*dbptr)->indexDB_ = indexdb;
// options.env = getPosixEnv();
status = DB::Open(options, name+"_kvDB", &kvdb);
if(!status.ok()) return status;
(*dbptr)->kvDB_ = kvdb;
// options.env = getPosixEnv();
// status = Open(options, name+"_metaDB", &metadb);
// if(!status.ok()) return status;
// (*dbptr)->metaDB_ = metadb;
(*dbptr)->dbname_ = name;
// status = (*dbptr)->Recover();
(*dbptr)->options_ = &options;
(*dbptr)->env_ = options.env;
return status;
}
Status testDB::Put(const WriteOptions &options, const Slice &key, const Slice &value) {
return kvDB_->Put(options, key, value);
}
Status testDB::PutFields(const WriteOptions &, const Slice &key, const FieldArray &tests) {
return Status::OK();
}
Status testDB::Delete(const WriteOptions &options, const Slice &key) {
return kvDB_->Delete(options, key);
}
Status testDB::Write(const WriteOptions &options, WriteBatch *updates) {
return kvDB_->Write(options, updates);
}
Status testDB::Get(const ReadOptions &options, const Slice &key, std::string *value) {
return kvDB_->Get(options, key, value);
}
Status testDB::GetFields(const ReadOptions &options, const Slice &key, FieldArray *tests) {
return Status::OK();
}
std::vector<std::string> testDB::FindKeysByField(Field &test) {
return std::vector<std::string>();
}
Iterator * testDB::NewIterator(const ReadOptions &options) {
return kvDB_->NewIterator(options);
}
const Snapshot * testDB::GetSnapshot() {
return kvDB_->GetSnapshot();
}
void testDB::ReleaseSnapshot(const Snapshot *snapshot) {
kvDB_->ReleaseSnapshot(snapshot);
}
bool testDB::GetProperty(const Slice &property, std::string *value) {
return kvDB_->GetProperty(property, value);
}
void testDB::GetApproximateSizes(const Range *range, int n, uint64_t *sizes) {
kvDB_->GetApproximateSizes(range, n, sizes);
}
void testDB::CompactRange(const Slice *begin, const Slice *end) {
kvDB_->CompactRange(begin, end);
}
Status testdb::DestroyDB(const std::string& name, const Options& options) {
Status s;
s = leveldb::DestroyDB(name+"_kvDB", options);
assert(s.ok());
// s = leveldb::DestroyDB(name+"_indexDB", options);
// assert(s.ok());
// s = leveldb::DestroyDB(name+"_metaDB", options);
// assert(s.ok());
return s;
}
testDB::~testDB() {
delete kvDB_;
// delete indexDB_;
// delete metaDB_;
}