void LoaderManager::process()

in src/dxapi/native/tickdb/loader_manager.cpp [247:286]


void LoaderManager::process(TickLoaderImpl * loader)
{
    try {
        srw_read section(loaders_.lock());
        if (loaders_.find(loader)) {
            loader->processResponse();

#if LOADER_FLUSH_TIMER_ENABLED
            // If not immediately flushed
            if (loader->minChunkSize_ > 0) {
                if (loader->flushable_.test_and_set()) {
                    if () {
                        bool shouldBeFlushed = loader->willBeFlushedByManager_.test_and_set(memory_order_acq_rel);
                        if (shouldBeFlushed) {
                            loader->beingFlushed_.test_and_set(memory_order_acq_rel);

                            loader->willBeFlushedByManager_.clear(memory_order_release);
                            loader->beingFlushed_.clear(memory_order_release);
                        }
                    }
                }
                
            }
#endif // #if LOADER_FLUSH_TIMER_ENABLED
        }
    }
    catch (const std::exception &e) {
        DBGLOG(LOGHDR ".loaderManager: ERR: loader %s threw an exception: %s!", ID, loader->textId(), e.what());
        // We can't allow exceptions in this thread
        // TODO: We will ignore this in Release build, but throw in debug build
        assert(!"Exception while processing input stream of a loader");
    }

    catch (...) {
        DBGLOG(LOGHDR ".loaderManager: ERR: loader %s threw an exception!", ID, loader->textId());
        // We can't allow exceptions in this thread
        // TODO: We will ignore this in Release build, but throw in debug build
        assert(!"Exception while processing input stream of a loader");
    }
}