uint32_t TickLoader::registerType()

in src/tick_loader.cpp [61:81]


uint32_t TickLoader::registerType(const std::string &type_name) {
    auto it = type_to_id_.find(type_name);
    if (it == type_to_id_.end()) {
        int32_t descriptor_id = findDescriptor(type_name);
        if (descriptor_id == INT32_MIN)
            THROW_EXCEPTION("Type '%s' not found in stream schema.", type_name.c_str());

        std::shared_ptr<MessageCodec> new_message_codec = 
            std::shared_ptr<MessageCodec>(new MessageCodec(descriptors_, descriptor_id));

        while (message_codecs_.size() <= next_id_)
            message_codecs_.push_back(NULL);
        message_codecs_[next_id_] = new_message_codec;
        type_to_id_[type_name] = next_id_;
        loader_->registerMessageType(next_id_, type_name);

        return next_id_++;
    }
        
    return it->second;
}