refs #649, skip reading of info objects if only caches are used and emit signals when syncronized from cache

(applied after 1st performance fix for cache was ready)
* utility functions to detect if only caches are used
* renamed some functions
* renamed some db flags and added new ones
This commit is contained in:
Klaus Basan
2016-06-05 15:52:44 +02:00
parent c31145b3a0
commit f02bf0ac0a
16 changed files with 159 additions and 89 deletions

View File

@@ -52,6 +52,13 @@ namespace BlackCore
this->m_cacheLifetime = time;
}
bool CDatabaseReaderConfig::possiblyReadsFromSwiftDb() const
{
if (!this->isValid()) { return false; }
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { return false; }
return (this->getRetrievalMode().testFlag(CDbFlags::DbDirect) || this->getRetrievalMode().testFlag(CDbFlags::Shared));
}
bool CDatabaseReaderConfig::isValid() const
{
return this->m_entities != BlackMisc::Network::CEntityFlags::NoEntity;
@@ -87,10 +94,19 @@ namespace BlackCore
}
}
bool CDatabaseReaderConfigList::possiblyReadsFromSwiftDb() const
{
for (const CDatabaseReaderConfig &config : *this)
{
if (config.possiblyReadsFromSwiftDb()) { return true; }
}
return false;
}
CDatabaseReaderConfigList CDatabaseReaderConfigList::forMappingTool()
{
const CTime timeout(5.0, CTimeUnit::min());
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::DbCached;
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
CDatabaseReaderConfigList l;
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
@@ -104,7 +120,7 @@ namespace BlackCore
CDatabaseReaderConfigList CDatabaseReaderConfigList::forPilotClient()
{
const CTime timeout(24.0, CTimeUnit::h());
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::SharedCached;
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
CDatabaseReaderConfigList l;
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));