Loading...
Searching...
No Matches
kv_client.cpp
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
21
22#include <glog/logging.h>
23
24namespace resdb {
25
28
29int KVClient::Set(const std::string& key, const std::string& data) {
30 KVRequest request;
31 request.set_cmd(KVRequest::SET);
32 request.set_key(key);
33 request.set_value(data);
34 return SendRequest(request);
35}
36
37std::unique_ptr<std::string> KVClient::Get(const std::string& key) {
38 KVRequest request;
39 request.set_cmd(KVRequest::GET);
40 request.set_key(key);
41 KVResponse response;
42 int ret = SendRequest(request, &response);
43 if (ret != 0) {
44 LOG(ERROR) << "send request fail, ret:" << ret;
45 return nullptr;
46 }
47 return std::make_unique<std::string>(response.value());
48}
49
50std::unique_ptr<std::string> KVClient::GetAllValues() {
51 KVRequest request;
52 request.set_cmd(KVRequest::GETALLVALUES);
53 KVResponse response;
54 int ret = SendRequest(request, &response);
55 if (ret != 0) {
56 LOG(ERROR) << "send request fail, ret:" << ret;
57 return nullptr;
58 }
59 return std::make_unique<std::string>(response.value());
60}
61
62std::unique_ptr<std::string> KVClient::GetRange(const std::string& min_key,
63 const std::string& max_key) {
64 KVRequest request;
65 request.set_cmd(KVRequest::GETRANGE);
66 request.set_key(min_key);
67 request.set_value(max_key);
68 KVResponse response;
69 int ret = SendRequest(request, &response);
70 if (ret != 0) {
71 LOG(ERROR) << "send request fail, ret:" << ret;
72 return nullptr;
73 }
74 return std::make_unique<std::string>(response.value());
75}
76
77int KVClient::Set(const std::string& key, const std::string& data,
78 int version) {
79 KVRequest request;
80 request.set_cmd(KVRequest::SET_WITH_VERSION);
81 request.set_key(key);
82 request.set_value(data);
83 request.set_version(version);
84 return SendRequest(request);
85}
86
87std::unique_ptr<ValueInfo> KVClient::Get(const std::string& key, int version) {
88 KVRequest request;
89 request.set_cmd(KVRequest::GET_WITH_VERSION);
90 request.set_key(key);
91 request.set_version(version);
92 KVResponse response;
93 int ret = SendRequest(request, &response);
94 if (ret != 0) {
95 LOG(ERROR) << "send request fail, ret:" << ret;
96 return nullptr;
97 }
98 return std::make_unique<ValueInfo>(response.value_info());
99}
100
101std::unique_ptr<Items> KVClient::GetKeyRange(const std::string& min_key,
102 const std::string& max_key) {
103 KVRequest request;
104 request.set_cmd(KVRequest::GET_KEY_RANGE);
105 request.set_min_key(min_key);
106 request.set_max_key(max_key);
107 KVResponse response;
108 int ret = SendRequest(request, &response);
109 if (ret != 0) {
110 LOG(ERROR) << "send request fail, ret:" << ret;
111 return nullptr;
112 }
113 return std::make_unique<Items>(response.items());
114}
115
116std::unique_ptr<Items> KVClient::GetKeyHistory(const std::string& key,
117 int min_version,
118 int max_version) {
119 KVRequest request;
120 request.set_cmd(KVRequest::GET_HISTORY);
121 request.set_key(key);
122 request.set_min_version(min_version);
123 request.set_max_version(max_version);
124 KVResponse response;
125 int ret = SendRequest(request, &response);
126 if (ret != 0) {
127 LOG(ERROR) << "send request fail, ret:" << ret;
128 return nullptr;
129 }
130 return std::make_unique<Items>(response.items());
131}
132
133std::unique_ptr<Items> KVClient::GetKeyTopHistory(const std::string& key,
134 int top_number) {
135 KVRequest request;
136 request.set_cmd(KVRequest::GET_TOP);
137 request.set_key(key);
138 request.set_top_number(top_number);
139 KVResponse response;
140 int ret = SendRequest(request, &response);
141 if (ret != 0) {
142 LOG(ERROR) << "send request fail, ret:" << ret;
143 return nullptr;
144 }
145 return std::make_unique<Items>(response.items());
146}
147
148} // namespace resdb
std::string data
int Set(const std::string &key, const std::string &data, int version)
Definition kv_client.cpp:77
std::unique_ptr< Items > GetKeyTopHistory(const std::string &key, int top_number)
std::unique_ptr< std::string > GetRange(const std::string &min_key, const std::string &max_key)
Definition kv_client.cpp:62
KVClient(const ResDBConfig &config)
Definition kv_client.cpp:26
std::unique_ptr< Items > GetKeyHistory(const std::string &key, int min_version, int max_version)
std::unique_ptr< ValueInfo > Get(const std::string &key, int version)
Definition kv_client.cpp:87
std::unique_ptr< Items > GetKeyRange(const std::string &min_key, const std::string &max_key)
std::unique_ptr< std::string > GetAllValues()
Definition kv_client.cpp:50
int SendRequest(const google::protobuf::Message &message, Request::Type type=Request::TYPE_CLIENT_REQUEST)