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