小组成员:陈予曈、朱陈媛
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

118 строки
2.6 KiB

#include "db/NewDB.h"
#include "util/coding.h"
#include "db/write_batch_internal.h"
#include "db/version_set.h"
#include "db/db_impl.h"
#include <string>
#include <sstream>
#include <unordered_map>
#include <map>
#include <iostream>
#include <mutex>
#include <thread>
#include <ctime>
#include <condition_variable>
#include <unordered_set>
namespace leveldb{
NewDB::~NewDB() {
}
std::string NewDB::SerializeValue(const FieldArray& fields){
std::string value_str;
for(const auto& pair : fields){
std::string field = pair.first + ":" + pair.second;
uint32_t field_size = field.size();
char buffer[4];
EncodeFixed32(buffer, field_size);
value_str.append(buffer, 4);
value_str.append(field);
}
return value_str;
// std::string s;
// for(auto& field : fields){
// PutLengthPrefixedSlice(&s, Slice(field.first));
// PutLengthPrefixedSlice(&s, Slice(field.second));
// }
// return s;
}
FieldArray NewDB::ParseValue(const std::string& value_str){
FieldArray fields;
const char* data = value_str.data();
size_t length = value_str.size();
while (length >= 4) {
uint32_t field_size = DecodeFixed32(data);
if (length < 4 + field_size) {
break;
}
std::string field(data + 4, field_size);
size_t colon_pos = field.find(':');
std::string field_name = field.substr(0, colon_pos);
std::string field_value = field.substr(colon_pos + 1);
fields.push_back(std::make_pair(field_name,field_value));
data += 4 + field_size;
length -= 4 + field_size;
}
return fields;
// Slice input(value_str);
// Slice v1,v2;
// FieldArray fields;
// while(v1!=Slice()){
// GetLengthPrefixedSlice(&input, &v1);
// GetLengthPrefixedSlice(&input, &v2);
// fields.push_back(std::make_pair(v1.ToString(), v2.ToString()));
// }
// return fields;
}
Status NewDB::Open(const Options& options, const std::string& name, NewDB** dbptr) {
}
Status NewDB::Put_fields(const WriteOptions& options, const Slice& key, const FieldArray& fields){
}
Status NewDB::Get_fields(const ReadOptions& options, const Slice& key, FieldArray* fields){
}
std::vector<std::string> NewDB::FindKeysByField(Field &field){
}
bool NewDB::Delete(const WriteOptions& options, const Slice& key){
}
bool NewDB::CreateIndexOnField(const std::string& field_name) {
}
std::vector<std::string> NewDB::QueryByIndex(Field &field){
}
bool NewDB::DeleteIndex(const std::string& field_name){
}
}