You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Xiaobing Zhou (JIRA)" <ji...@apache.org> on 2017/03/03 20:58:45 UTC
[jira] [Created] (HBASE-17727) [C++] Make RespConverter work with
MockRawAsyncTableImpl
Xiaobing Zhou created HBASE-17727:
-------------------------------------
Summary: [C++] Make RespConverter work with MockRawAsyncTableImpl
Key: HBASE-17727
URL: https://issues.apache.org/jira/browse/HBASE-17727
Project: HBase
Issue Type: Sub-task
Reporter: Xiaobing Zhou
Assignee: Xiaobing Zhou
This is a follow up work of HBASE-17465.
There's a problem to dereference instance of RpcCallback when it's passed as function argument.
{code}
template<typename R,
typename S>
using RespConverter = std::function<R(const S&)>;
{code}
{code}
template<typename REQ,
typename PREQ,
typename PRESP,
typename RESP>
folly::Future<RESP> Call(
std::shared_ptr<hbase::RpcClient> rpc_client,
std::shared_ptr<HBaseRpcController> controller,
std::shared_ptr<RegionLocation> loc,
const REQ& req,
const ReqConverter<std::unique_ptr<PREQ>, REQ, std::string>& req_converter,
const hbase::RpcCall<PREQ, PRESP, hbase::RpcClient>& rpc_call,
const RespConverter<std::unique_ptr<RESP>, PRESP>& resp_converter) {
rpc_call(
rpc_client,
loc,
controller,
std::move(req_converter(req, loc->region_name())))
.then([&, this](std::unique_ptr<PRESP> presp) {
// std::unique_ptr<hbase::Result> result = resp_converter(presp);
std::unique_ptr<hbase::Result> result = hbase::ResponseConverter::FromGetResponse(*presp);
promise_->setValue(std::move(*result));
})
.onError([this] (const std::exception& e) {promise_->setException(e);});
return promise_->getFuture();
}
{code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)