mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
refs #787, support of header loading in reader config
This commit is contained in:
@@ -42,6 +42,14 @@ namespace BlackCore
|
||||
return static_cast<CEntityFlags::Entity>(this->m_entities);
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfig::supportsEntities(CEntityFlags::Entity entities) const
|
||||
{
|
||||
const int myEntities = static_cast<int>(this->getEntities());
|
||||
const int testEnties = static_cast<int>(entities);
|
||||
const int common = myEntities & testEnties;
|
||||
return (common == testEnties) || (common == myEntities);
|
||||
}
|
||||
|
||||
CDbFlags::DataRetrievalMode CDatabaseReaderConfig::getRetrievalMode() const
|
||||
{
|
||||
return static_cast<CDbFlags::DataRetrievalMode>(this->m_retrievalFlags);
|
||||
@@ -63,7 +71,28 @@ namespace BlackCore
|
||||
{
|
||||
if (!this->isValid()) { return false; }
|
||||
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { return false; }
|
||||
return (this->getRetrievalMode().testFlag(CDbFlags::DbDirect) || this->getRetrievalMode().testFlag(CDbFlags::Shared));
|
||||
return (this->getRetrievalMode().testFlag(CDbFlags::DbReading));
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfig::needsSharedHeader() const
|
||||
{
|
||||
if (!this->isValid()) { return false; }
|
||||
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { return false; }
|
||||
return (this->getRetrievalMode().testFlag(CDbFlags::Shared) || this->getRetrievalMode().testFlag(CDbFlags::SharedHeadersOnly));
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfig::needsSharedHeaderLoaded() const
|
||||
{
|
||||
if (!this->isValid()) { return false; }
|
||||
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { return false; }
|
||||
return (this->getRetrievalMode().testFlag(CDbFlags::Shared));
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfig::possiblyWritesToSwiftDb() const
|
||||
{
|
||||
if (!this->isValid()) { return false; }
|
||||
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { return false; }
|
||||
return (this->getRetrievalMode().testFlag(CDbFlags::DbWriting));
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfig::possiblyReadsFromCache() const
|
||||
@@ -124,6 +153,35 @@ namespace BlackCore
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfigList::possiblyWritesToSwiftDb() const
|
||||
{
|
||||
for (const CDatabaseReaderConfig &config : *this)
|
||||
{
|
||||
if (config.possiblyWritesToSwiftDb()) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfigList::needsSharedHeaders(CEntityFlags::Entity entities) const
|
||||
{
|
||||
for (const CDatabaseReaderConfig &config : *this)
|
||||
{
|
||||
if (!config.supportsEntities(entities)) { continue; }
|
||||
if (config.needsSharedHeader()) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CDatabaseReaderConfigList::needsSharedHeadersLoaded(CEntityFlags::Entity entities) const
|
||||
{
|
||||
for (const CDatabaseReaderConfig &config : *this)
|
||||
{
|
||||
if (!config.supportsEntities(entities)) { continue; }
|
||||
if (config.needsSharedHeaderLoaded()) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
CEntityFlags::Entity CDatabaseReaderConfigList::getEntitesCachedOrReadFromDB() const
|
||||
{
|
||||
CEntityFlags::Entity entities = CEntityFlags::NoEntity;
|
||||
@@ -139,51 +197,65 @@ namespace BlackCore
|
||||
|
||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forMappingTool()
|
||||
{
|
||||
const CTime timeout(5.0, CTimeUnit::min());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
||||
const CTime cacheLifetime(5.0, CTimeUnit::min());
|
||||
CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
||||
retrievalFlags |= CDbFlags::DbWriting;
|
||||
CDatabaseReaderConfigList l;
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, CDbFlags::Ignore, timeout)); // not needed in mapping tool
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, CDbFlags::Ignore, cacheLifetime)); // not needed in mapping tool
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||
return l;
|
||||
}
|
||||
|
||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forPilotClient()
|
||||
{
|
||||
const CTime timeout(24.0, CTimeUnit::h());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
||||
const CTime cacheLifetime(30.0, CTimeUnit::d());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheAndSharedHeaders;
|
||||
CDbFlags::DataRetrievalMode retrievalFlagsWriting = retrievalFlags;
|
||||
retrievalFlagsWriting |= CDbFlags::DbWriting;
|
||||
|
||||
CDatabaseReaderConfigList l;
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlagsWriting, cacheLifetime)); // for wizard
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||
return l;
|
||||
}
|
||||
|
||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forLauncher()
|
||||
{
|
||||
return forPilotClient();
|
||||
const CTime cacheLifetime(30.0, CTimeUnit::d());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenShared;
|
||||
CDatabaseReaderConfigList l;
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, CDbFlags::Ignore, cacheLifetime)); // not needed in mapping tool
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||
return l;
|
||||
}
|
||||
|
||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::allDirectDbAccess()
|
||||
{
|
||||
const CTime timeout(0.0, CTimeUnit::min());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::DbDirect;
|
||||
const CTime cacheLifetime(0.0, CTimeUnit::min());
|
||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::DbReading;
|
||||
CDatabaseReaderConfigList l;
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||
return l;
|
||||
}
|
||||
} // ns
|
||||
|
||||
@@ -50,6 +50,9 @@ namespace BlackCore
|
||||
//! Supported entities
|
||||
BlackMisc::Network::CEntityFlags::Entity getEntities() const;
|
||||
|
||||
//! Supports given entites?
|
||||
bool supportsEntities(BlackMisc::Network::CEntityFlags::Entity entities) const;
|
||||
|
||||
//! Supported modes
|
||||
BlackMisc::Db::CDbFlags::DataRetrievalMode getRetrievalMode() const;
|
||||
|
||||
@@ -62,6 +65,15 @@ namespace BlackCore
|
||||
//! Will read from swift DB
|
||||
bool possiblyReadsFromSwiftDb() const;
|
||||
|
||||
//! Needs the shared header
|
||||
bool needsSharedHeader() const;
|
||||
|
||||
//! Needs the shared header loaded before it can be continued
|
||||
bool needsSharedHeaderLoaded() const;
|
||||
|
||||
//! Will write to swift DB
|
||||
bool possiblyWritesToSwiftDb() const;
|
||||
|
||||
//! Will read from cache
|
||||
bool possiblyReadsFromCache() const;
|
||||
|
||||
@@ -70,7 +82,7 @@ namespace BlackCore
|
||||
|
||||
private:
|
||||
int m_entities = BlackMisc::Network::CEntityFlags::NoEntity; //!< BlackMisc::Network::CEntityFlags::Entity
|
||||
int m_retrievalFlags = BlackMisc::Db::CDbFlags::DbDirect; //!< BlackMisc::Db::CDbFlags::DataRetrievalMode
|
||||
int m_retrievalFlags = BlackMisc::Db::CDbFlags::DbReading; //!< BlackMisc::Db::CDbFlags::DataRetrievalMode
|
||||
BlackMisc::PhysicalQuantities::CTime m_cacheLifetime;
|
||||
|
||||
BLACK_METACLASS(
|
||||
@@ -106,6 +118,15 @@ namespace BlackCore
|
||||
//! Will read from swift DB
|
||||
bool possiblyReadsFromSwiftDb() const;
|
||||
|
||||
//! Will write to swift DB
|
||||
bool possiblyWritesToSwiftDb() const;
|
||||
|
||||
//! Needs any shared header
|
||||
bool needsSharedHeaders(BlackMisc::Network::CEntityFlags::Entity entities) const;
|
||||
|
||||
//! Needs any shared header loaded before continued
|
||||
bool needsSharedHeadersLoaded(BlackMisc::Network::CEntityFlags::Entity entities) const;
|
||||
|
||||
//! Entities which will use cache or DB, so no canceled or ignored ones
|
||||
BlackMisc::Network::CEntityFlags::Entity getEntitesCachedOrReadFromDB() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user