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.
 
 

72 lignes
2.2 KiB

#include "port/port_stdcxx.h"
#include "db/db_impl.h"
#include <cstdint>
#include <cstdio>
#include <deque>
#include <map>
#include <set>
#include <string>
#include "leveldb/db.h"
#include "leveldb/env.h"
#include "leveldb/options.h"
#include "leveldb/slice.h"
#include "leveldb/status.h"
#include <shared_mutex>
# ifndef test_DB_H
# define test_DB_H
namespace testdb {
using namespace leveldb;
enum IndexStatus{
Creating,
Deleting,
Exist,
NotExist
};
class testDB {
private:
leveldb::DB *kvDB_;
// leveldb::DB *metaDB_;
// leveldb::DB *indexDB_;
std::string dbname_;
const Options *options_;
Env *env_;
public:
friend class Request;
friend class testsReq;
friend class iCreateReq;
friend class iDeleteReq;
friend class DeleteReq;
friend class BatchReq;
//用的时候必须testDB *db = new testDB()再open,不能像之前一样DB *db
// testDB() : indexDB_(nullptr), kvDB_(nullptr), metaDB_(nullptr) {};
testDB() : kvDB_(nullptr) { }
~testDB();
/*lab1的要求,作为db派生类要实现的虚函数*/
Status Put(const WriteOptions &options, const Slice &key, const Slice &value) ;
Status PutFields(const WriteOptions &, const Slice &key, const FieldArray &tests) ;
Status Delete(const WriteOptions &options, const Slice &key) ;
Status Write(const WriteOptions &options, WriteBatch *updates) ;
Status Get(const ReadOptions &options, const Slice &key, std::string *value) ;
Status GetFields(const ReadOptions &options, const Slice &key, FieldArray *tests) ;
std::vector<std::string> FindKeysByField(Field &test) ;
Iterator * NewIterator(const ReadOptions &options) ;
const Snapshot * GetSnapshot() ;
void ReleaseSnapshot(const Snapshot *snapshot) ;
bool GetProperty(const Slice &property, std::string *value) ;
void GetApproximateSizes(const Range *range, int n, uint64_t *sizes) ;
void CompactRange(const Slice *begin, const Slice *end) ;
static Status OpentestDB(Options& options,const std::string& name,testDB** dbptr);
};
Status DestroyDB(const std::string& name,
const Options& options);
} // end of namespace
# endif