bool Encoder::encode()

in hessian2/basic_codec/map_codec.cc [98:112]


bool Encoder::encode(const TypedMapObject& value) {
  values_ref_.emplace(&value, values_ref_.size());
  auto typed_map = value.toTypedMap();
  ABSL_ASSERT(typed_map.has_value());
  auto& typed_map_value = typed_map.value().get();
  writer_->writeByte('M');
  Object::TypeRef type_ref(typed_map_value.type_name_);
  encode<Object::TypeRef>(type_ref);
  for (const auto& elem : typed_map_value.field_name_and_value_) {
    encode<Object>(*elem.first);
    encode<Object>(*elem.second);
  }
  writer_->writeByte('Z');
  return true;
}