void AsyncClientScanner::OpenScanner()

in src/hbase/client/async-client-scanner.cc [68:101]


void AsyncClientScanner::OpenScanner() {
  auto self(shared_from_this());
  open_scanner_tries_ = 1;

  auto caller = conn_->caller_factory()
                    ->Single<std::shared_ptr<OpenScannerResponse>>()
                    ->table(table_name_)
                    ->row(scan_->StartRow())
                    ->locate_type(GetLocateType(*scan_))
                    ->rpc_timeout(rpc_timeout_nanos_)
                    ->operation_timeout(scan_timeout_nanos_)
                    ->pause(pause_)
                    ->max_retries(max_retries_)
                    ->start_log_errors_count(start_log_errors_count_)
                    ->action([&](std::shared_ptr<hbase::HBaseRpcController> controller,
                                 std::shared_ptr<hbase::RegionLocation> loc,
                                 std::shared_ptr<hbase::RpcClient> rpc_client)
                                 -> folly::Future<std::shared_ptr<OpenScannerResponse>> {
                                   return CallOpenScanner(rpc_client, controller, loc);
                                 })
                    ->Build();

  caller->Call()
      .then([this, self](std::shared_ptr<OpenScannerResponse> resp) {
        VLOG(3) << "Opened scanner with id:" << resp->scan_resp_->scanner_id()
                << ", region:" << resp->region_location_->DebugString() << ", starting scan";
        StartScan(resp);
      })
      .onError([this, self](const folly::exception_wrapper& e) {
        VLOG(3) << "Open scan request received error:" << e.what();
        consumer_->OnError(e);
      })
      .then([caller, self](const auto r) { return r; });
}