std::vector MessageCodec::buildFieldDecoders()

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;
}