std::unique_ptr RequestConverter::ToScan()

in src/hbase/client/request-converter.cc [56:90]


std::unique_ptr<hbase::pb::Scan> RequestConverter::ToScan(const Scan &scan) {
  auto pb_scan = std::make_unique<hbase::pb::Scan>();
  pb_scan->set_max_versions(scan.MaxVersions());
  pb_scan->set_cache_blocks(scan.CacheBlocks());
  pb_scan->set_reversed(scan.IsReversed());
  pb_scan->set_caching(scan.Caching());
  pb_scan->set_start_row(scan.StartRow());
  pb_scan->set_stop_row(scan.StopRow());
  pb_scan->set_consistency(scan.Consistency());
  pb_scan->set_max_result_size(scan.MaxResultSize());
  pb_scan->set_allow_partial_results(scan.AllowPartialResults());
  pb_scan->set_load_column_families_on_demand(scan.LoadColumnFamiliesOnDemand());

  if (!scan.Timerange().IsAllTime()) {
    hbase::pb::TimeRange *pb_time_range = pb_scan->mutable_time_range();
    pb_time_range->set_from(scan.Timerange().MinTimeStamp());
    pb_time_range->set_to(scan.Timerange().MaxTimeStamp());
  }

  if (scan.HasFamilies()) {
    for (const auto &family : scan.FamilyMap()) {
      auto column = pb_scan->add_column();
      column->set_family(family.first);
      for (const auto &qualifier : family.second) {
        column->add_qualifier(qualifier);
      }
    }
  }

  if (scan.filter() != nullptr) {
    pb_scan->set_allocated_filter(Filter::ToProto(*(scan.filter())).release());
  }

  return std::move(pb_scan);
}