#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 #include #include #include #include #include #include #include #include #include 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 NewDB::FindKeysByField(Field &field){ } bool NewDB::Delete(const WriteOptions& options, const Slice& key){ } bool NewDB::CreateIndexOnField(const std::string& field_name) { } std::vector NewDB::QueryByIndex(Field &field){ } bool NewDB::DeleteIndex(const std::string& field_name){ } }