in src/codecs/message_codec.cpp [62:82]
std::vector<FieldCodecPtr> MessageCodec::buildFieldDecoders(
std::vector<Schema::FieldInfo> &fields,
const ClassDescriptors &descriptors)
{
std::vector<FieldCodecPtr> field_codecs;
for (int i = 0; i < fields.size(); ++i) {
Schema::FieldInfo &field = fields[i];
FieldCodecPtr field_codec = createFieldCodec(field.dataType, field.name, field.relativeTo, descriptors);
if (field_codec != nullptr) {
field_codecs.push_back(field_codec);
codecs_search_map_[field.name] = field_codec;
} else {
THROW_EXCEPTION("Unable to create decoder for field '%s', type '%s', encoding '%s'",
field.name.c_str(), field.dataType.typeName.c_str(), field.dataType.encodingName.c_str());
}
}
return field_codecs;
}