std::unique_ptr RequestConverter::ToMutation()

in src/hbase/client/request-converter.cc [224:255]


std::unique_ptr<MutationProto> RequestConverter::ToMutation(const MutationType type,
                                                            const Mutation &mutation,
                                                            const int64_t nonce) {
  auto pb_mut = std::make_unique<MutationProto>();
  pb_mut->set_row(mutation.row());
  pb_mut->set_mutate_type(type);
  pb_mut->set_durability(mutation.Durability());
  pb_mut->set_timestamp(mutation.TimeStamp());
  // TODO: set attributes from the mutation (key value pairs).

  if (nonce > 0) {
    pb_mut->set_nonce(nonce);
  }

  for (const auto &family : mutation.FamilyMap()) {
    for (const auto &cell : family.second) {
      auto column = pb_mut->add_column_value();
      column->set_family(cell->Family());
      auto qual = column->add_qualifier_value();
      qual->set_qualifier(cell->Qualifier());
      qual->set_timestamp(cell->Timestamp());
      auto cell_type = cell->Type();
      if (type == pb::MutationProto_MutationType_DELETE ||
          (type == pb::MutationProto_MutationType_PUT && IsDelete(cell_type))) {
        qual->set_delete_type(ToDeleteType(cell_type));
      }

      qual->set_value(cell->Value());
    }
  }
  return std::move(pb_mut);
}