void KinesisRecord::after_remove()

in aws/kinesis/core/kinesis_record.cc [175:211]


void KinesisRecord::after_remove(const std::shared_ptr<UserRecord>& ur) {
  cached_accurate_size_valid_ = false;

  aggregated_record_.mutable_records()->RemoveLast();
  estimated_size_ -= ur->data().length() + 3;

  {
    auto pk_rm_result = partition_keys_.remove_one(ur->partition_key());
    if (pk_rm_result.first) {
      aggregated_record_.mutable_partition_key_table()->RemoveLast();
      for (int i = 0; i < aggregated_record_.records_size(); i++) {
        auto r = aggregated_record_.mutable_records(i);
        if (r->partition_key_index() > pk_rm_result.second) {
          r->set_partition_key_index(r->partition_key_index() - 1);
        }
      }
      estimated_size_ -= ur->partition_key().length() + 3;
    }
    estimated_size_ -= 2;
  }

  auto ehk = ur->explicit_hash_key();
  if (ehk) {
    auto ehk_rm_result = explicit_hash_keys_.remove_one(ehk.get());
    if (ehk_rm_result.first) {
      aggregated_record_.mutable_explicit_hash_key_table()->RemoveLast();
      for (int i = 0; i < aggregated_record_.records_size(); i++) {
        auto r = aggregated_record_.mutable_records(i);
        if (r->explicit_hash_key_index() > ehk_rm_result.second) {
          r->set_explicit_hash_key_index(r->explicit_hash_key_index() - 1);
        }
      }
      estimated_size_ -= ehk->length() + 3;
    }
    estimated_size_ -= 2;
  }
}