Fixed bug when only one key is returned during ls().
Instead of placing it in response::value it should be placed in reponse::values
This commit is contained in:
parent
79f28dce20
commit
dd1d01519c
|
|
@ -10,7 +10,7 @@ etcd::Response::Response(const etcdv3::V3Response& reply)
|
|||
_error_message = reply.error_message;
|
||||
_action = reply.action;
|
||||
int size = reply.values.size();
|
||||
if(size > 1)
|
||||
if(reply.isPrefix)
|
||||
{
|
||||
for(int index = 0; index < size; index++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -189,10 +189,16 @@ TEST_CASE("list a directory")
|
|||
CHECK(0 == etcd.ls("/test/new_dir").get().keys().size());
|
||||
|
||||
etcd.set("/test/new_dir/key1", "value1").wait();
|
||||
etcd::Response resp = etcd.ls("/test/new_dir").get();
|
||||
CHECK("get" == resp.action());
|
||||
REQUIRE(1 == resp.keys().size());
|
||||
CHECK("/test/new_dir/key1" == resp.key(0));
|
||||
CHECK("value1" == resp.value(0).as_string());
|
||||
|
||||
etcd.set("/test/new_dir/key2", "value2").wait();
|
||||
etcd.set("/test/new_dir/sub_dir", "value3").wait();
|
||||
|
||||
etcd::Response resp = etcd.ls("/test/new_dir").get();
|
||||
resp = etcd.ls("/test/new_dir").get();
|
||||
CHECK("get" == resp.action());
|
||||
REQUIRE(3 == resp.keys().size());
|
||||
CHECK("/test/new_dir/key1" == resp.key(0));
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ namespace etcdv3
|
|||
AsyncRangeResponse ParseResponse();
|
||||
RangeResponse reply;
|
||||
std::unique_ptr<ClientAsyncResponseReader<RangeResponse>> response_reader;
|
||||
bool prefix;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@ namespace etcdv3
|
|||
class V3Response
|
||||
{
|
||||
public:
|
||||
V3Response(): error_code(0), index(0) {};
|
||||
V3Response(): error_code(0), index(0), isPrefix(false) {};
|
||||
int error_code;
|
||||
int index;
|
||||
bool isPrefix;
|
||||
std::string error_message;
|
||||
std::string action;
|
||||
std::vector<mvccpb::KeyValue> values;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ etcdv3::AsyncGetAction::AsyncGetAction(std::string const & key, KV::Stub* stub_,
|
|||
get_request.set_key(key);
|
||||
if(withPrefix)
|
||||
{
|
||||
prefix = withPrefix;
|
||||
std::string range_end(key);
|
||||
int ascii = (int)range_end[range_end.length()-1];
|
||||
range_end.back() = ascii+1;
|
||||
|
|
@ -35,6 +36,7 @@ etcdv3::AsyncRangeResponse etcdv3::AsyncGetAction::ParseResponse()
|
|||
{
|
||||
range_resp.ParseResponse();
|
||||
range_resp.action = etcdv3::GET_ACTION;
|
||||
range_resp.isPrefix = prefix;
|
||||
}
|
||||
|
||||
return range_resp;
|
||||
|
|
|
|||
Loading…
Reference in New Issue