10225501448 李度 10225101546 陈胤遒 10215501422 高宇菲
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.
 
 

112 lines
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_;
}