void TickLoaderImpl::dispatchTypesSubscriptionChange()

in src/dxapi/native/tickdb/http/tickloader_http.cpp [664:696]


void TickLoaderImpl::dispatchTypesSubscriptionChange(bool all, bool added, const std::vector<std::string> &types)
{
    vector<SubscriptionListener *> listeners;
    {
        srw_read section(subscriptionListenersLock_);
        for (auto i : subscriptionListeners_) {
            listeners.push_back(i);
        }
    }

    for (auto i : listeners) {
        try {
            all ?
                (added ? i->allTypesAdded() : i->allTypesRemoved())
                :
                (added ? i->typesAdded(types) : i->typesRemoved(types));
        }
        catch (const std::exception &e) {
            std::string errmsg;
            format_string(&errmsg, LOGHDR ".dispatchTypesSubscriptionChange(all:%d, added:%d) ERROR: std::exception: %s",
                ID, (int)all, (int)added, e.what());
            DXAPIIMPL_DISPATCH_LOG();
            DXAPIIMPL_DISPATCH_THROW();
        }
        catch (...) {
            std::string errmsg;
            format_string(&errmsg, LOGHDR ".dispatchTypesSubscriptionChange(all:%d, added:%d) ERROR: system exception!",
                ID, (int)all, (int)added);
            DXAPIIMPL_DISPATCH_LOG();
            DXAPIIMPL_DISPATCH_THROW();
        }
    }
}