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