|
|
@ -19,6 +19,62 @@ 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) { |
|
|
|
|
|
|
|
} |
|
|
|