folly::Future RawAsyncTable::CheckAndDelete()

in src/hbase/client/raw-async-table.cc [141:166]


folly::Future<bool> RawAsyncTable::CheckAndDelete(const std::string& row, const std::string& family,
                                                  const std::string& qualifier,
                                                  const std::string& value,
                                                  const hbase::Delete& del,
                                                  const pb::CompareType& compare_op) {
  auto caller =
      CreateCallerBuilder<bool>(row, connection_conf_->write_rpc_timeout())
          ->action([=, &del](std::shared_ptr<hbase::HBaseRpcController> controller,
                             std::shared_ptr<hbase::RegionLocation> loc,
                             std::shared_ptr<hbase::RpcClient> rpc_client) -> folly::Future<bool> {
            return Call<hbase::Delete, hbase::Request, hbase::Response, bool>(
                rpc_client, controller, loc, del,
                // request conversion
                [=, &del](const hbase::Delete& dlt,
                          const std::string& region_name) -> std::unique_ptr<Request> {
                  auto checkReq = RequestConverter::CheckAndDeleteToMutateRequest(
                      row, family, qualifier, value, compare_op, dlt, region_name);
                  return checkReq;
                },
                // response conversion
                &ResponseConverter::BoolFromMutateResponse);
          })
          ->Build();

  return caller->Call().then([caller](const auto r) { return r; });
}