39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#include "v3/include/AsyncGetAction.hpp"
|
|
#include "v3/include/action_constants.hpp"
|
|
|
|
using etcdserverpb::RangeRequest;
|
|
|
|
etcdv3::AsyncGetAction::AsyncGetAction(etcdv3::ActionParameters param)
|
|
: etcdv3::Action(param)
|
|
{
|
|
RangeRequest get_request;
|
|
get_request.set_key(parameters.key);
|
|
if(parameters.withPrefix)
|
|
{
|
|
std::string range_end(parameters.key);
|
|
int ascii = (int)range_end[range_end.length()-1];
|
|
range_end.back() = ascii+1;
|
|
|
|
get_request.set_range_end(range_end);
|
|
get_request.set_sort_target(RangeRequest::SortTarget::RangeRequest_SortTarget_KEY);
|
|
get_request.set_sort_order(RangeRequest::SortOrder::RangeRequest_SortOrder_ASCEND);
|
|
}
|
|
response_reader = parameters.kv_stub->AsyncRange(&context,get_request,&cq_);
|
|
response_reader->Finish(&reply, &status, (void*)this);
|
|
}
|
|
|
|
etcdv3::AsyncRangeResponse etcdv3::AsyncGetAction::ParseResponse()
|
|
{
|
|
AsyncRangeResponse range_resp;
|
|
if(!status.ok())
|
|
{
|
|
range_resp.set_error_code(status.error_code());
|
|
range_resp.set_error_message(status.error_message());
|
|
}
|
|
else
|
|
{
|
|
range_resp.ParseResponse(reply, parameters.withPrefix);
|
|
}
|
|
return range_resp;
|
|
}
|