int32_t getTypeId()

in src/codecs/field_codecs.h [1094:1115]


    int32_t getTypeId(PyObject *message) {
        if (types_.size() == 1)
            return 0;

        std::string type_name;
        bool exists = getStringValue(message, TYPE_NAME_PROPERTY, TYPE_NAME_PROPERTY1, type_name);
        if (!exists)
            THROW_EXCEPTION("Unkown type of object. Specify '%s' attribute for field '%s'.", 
                TYPE_NAME_PROPERTY.c_str(), field_name_.c_str());

        auto type_id_it = type_name_to_id_.find(type_name);
        if (type_id_it == type_name_to_id_.end())
            THROW_EXCEPTION("Unknown type '%s' of field '%s'.", 
                type_name.c_str(), field_name_.c_str());

        int32_t type_id = type_id_it->second;
        if (type_id < 0 || type_id >= codecs_.size())
            THROW_EXCEPTION("Can't find codec for type '%s' of field '%s'", 
                type_name.c_str(), field_name_.c_str());

        return type_id;
    }