30 const std::string& request) {
32 KVResponse kv_response;
34 if (!kv_request.ParseFromString(request)) {
35 LOG(ERROR) <<
"parse data fail";
39 if (kv_request.cmd() == KVRequest::SET) {
40 Set(kv_request.key(), kv_request.value());
41 }
else if (kv_request.cmd() == KVRequest::GET) {
42 kv_response.set_value(
Get(kv_request.key()));
43 }
else if (kv_request.cmd() == KVRequest::GETALLVALUES) {
45 }
else if (kv_request.cmd() == KVRequest::GETRANGE) {
46 kv_response.set_value(
GetRange(kv_request.key(), kv_request.value()));
47 }
else if (kv_request.cmd() == KVRequest::SET_WITH_VERSION) {
48 SetWithVersion(kv_request.key(), kv_request.value(), kv_request.version());
49 }
else if (kv_request.cmd() == KVRequest::GET_WITH_VERSION) {
51 kv_response.mutable_value_info());
52 }
else if (kv_request.cmd() == KVRequest::GET_ALL_ITEMS) {
54 }
else if (kv_request.cmd() == KVRequest::GET_KEY_RANGE) {
55 GetKeyRange(kv_request.min_key(), kv_request.max_key(),
56 kv_response.mutable_items());
57 }
else if (kv_request.cmd() == KVRequest::GET_HISTORY) {
58 GetHistory(kv_request.key(), kv_request.min_version(),
59 kv_request.max_version(), kv_response.mutable_items());
60 }
else if (kv_request.cmd() == KVRequest::GET_TOP) {
62 kv_response.mutable_items());
65 std::unique_ptr<std::string> resp_str = std::make_unique<std::string>();
66 if (!kv_response.SerializeToString(resp_str.get())) {
101 const std::map<std::string, std::pair<std::string, int>>& ret =
102 storage_->GetAllItems();
103 for (
auto it : ret) {
104 Item* item = items->add_item();
105 item->set_key(it.first);
106 item->mutable_value_info()->set_value(it.second.first);
107 item->mutable_value_info()->set_version(it.second.second);
112 const std::string& max_key, Items* items) {
113 const std::map<std::string, std::pair<std::string, int>>& ret =
114 storage_->GetKeyRange(min_key, max_key);
115 for (
auto it : ret) {
116 Item* item = items->add_item();
117 item->set_key(it.first);
118 item->mutable_value_info()->set_value(it.second.first);
119 item->mutable_value_info()->set_version(it.second.second);
124 int max_version, Items* items) {
125 const std::vector<std::pair<std::string, int>>& ret =
126 storage_->GetHistory(key, min_version, max_version);
127 for (
auto it : ret) {
128 Item* item = items->add_item();
130 item->mutable_value_info()->set_value(it.first);
131 item->mutable_value_info()->set_version(it.second);
137 const std::vector<std::pair<std::string, int>>& ret =
138 storage_->GetTopHistory(key, top_number);
139 for (
auto it : ret) {
140 Item* item = items->add_item();
142 item->mutable_value_info()->set_value(it.first);
143 item->mutable_value_info()->set_version(it.second);