mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-26 10:45:37 +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);
|
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
|
CDbFlags::DataRetrievalMode CDatabaseReaderConfig::getRetrievalMode() const
|
||||||
{
|
{
|
||||||
return static_cast<CDbFlags::DataRetrievalMode>(this->m_retrievalFlags);
|
return static_cast<CDbFlags::DataRetrievalMode>(this->m_retrievalFlags);
|
||||||
@@ -63,7 +71,28 @@ namespace BlackCore
|
|||||||
{
|
{
|
||||||
if (!this->isValid()) { return false; }
|
if (!this->isValid()) { return false; }
|
||||||
if (!CEntityFlags::anySwiftDbEntity(this->getEntities())) { 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
|
bool CDatabaseReaderConfig::possiblyReadsFromCache() const
|
||||||
@@ -124,6 +153,35 @@ namespace BlackCore
|
|||||||
return false;
|
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 CDatabaseReaderConfigList::getEntitesCachedOrReadFromDB() const
|
||||||
{
|
{
|
||||||
CEntityFlags::Entity entities = CEntityFlags::NoEntity;
|
CEntityFlags::Entity entities = CEntityFlags::NoEntity;
|
||||||
@@ -139,51 +197,65 @@ namespace BlackCore
|
|||||||
|
|
||||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forMappingTool()
|
CDatabaseReaderConfigList CDatabaseReaderConfigList::forMappingTool()
|
||||||
{
|
{
|
||||||
const CTime timeout(5.0, CTimeUnit::min());
|
const CTime cacheLifetime(5.0, CTimeUnit::min());
|
||||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
||||||
|
retrievalFlags |= CDbFlags::DbWriting;
|
||||||
CDatabaseReaderConfigList l;
|
CDatabaseReaderConfigList l;
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, CDbFlags::Ignore, timeout)); // not needed in mapping tool
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, CDbFlags::Ignore, cacheLifetime)); // not needed in mapping tool
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forPilotClient()
|
CDatabaseReaderConfigList CDatabaseReaderConfigList::forPilotClient()
|
||||||
{
|
{
|
||||||
const CTime timeout(24.0, CTimeUnit::h());
|
const CTime cacheLifetime(30.0, CTimeUnit::d());
|
||||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheThenDb;
|
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::CacheAndSharedHeaders;
|
||||||
|
CDbFlags::DataRetrievalMode retrievalFlagsWriting = retrievalFlags;
|
||||||
|
retrievalFlagsWriting |= CDbFlags::DbWriting;
|
||||||
|
|
||||||
CDatabaseReaderConfigList l;
|
CDatabaseReaderConfigList l;
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlagsWriting, cacheLifetime)); // for wizard
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDatabaseReaderConfigList CDatabaseReaderConfigList::forLauncher()
|
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()
|
CDatabaseReaderConfigList CDatabaseReaderConfigList::allDirectDbAccess()
|
||||||
{
|
{
|
||||||
const CTime timeout(0.0, CTimeUnit::min());
|
const CTime cacheLifetime(0.0, CTimeUnit::min());
|
||||||
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::DbDirect;
|
const CDbFlags::DataRetrievalMode retrievalFlags = CDbFlags::DbReading;
|
||||||
CDatabaseReaderConfigList l;
|
CDatabaseReaderConfigList l;
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AircraftIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirlineIcaoEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::AirportEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::DistributorEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::ModelEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::LiveryEntity, retrievalFlags, cacheLifetime));
|
||||||
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, timeout));
|
l.push_back(CDatabaseReaderConfig(CEntityFlags::CountryEntity, retrievalFlags, cacheLifetime));
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -50,6 +50,9 @@ namespace BlackCore
|
|||||||
//! Supported entities
|
//! Supported entities
|
||||||
BlackMisc::Network::CEntityFlags::Entity getEntities() const;
|
BlackMisc::Network::CEntityFlags::Entity getEntities() const;
|
||||||
|
|
||||||
|
//! Supports given entites?
|
||||||
|
bool supportsEntities(BlackMisc::Network::CEntityFlags::Entity entities) const;
|
||||||
|
|
||||||
//! Supported modes
|
//! Supported modes
|
||||||
BlackMisc::Db::CDbFlags::DataRetrievalMode getRetrievalMode() const;
|
BlackMisc::Db::CDbFlags::DataRetrievalMode getRetrievalMode() const;
|
||||||
|
|
||||||
@@ -62,6 +65,15 @@ namespace BlackCore
|
|||||||
//! Will read from swift DB
|
//! Will read from swift DB
|
||||||
bool possiblyReadsFromSwiftDb() const;
|
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
|
//! Will read from cache
|
||||||
bool possiblyReadsFromCache() const;
|
bool possiblyReadsFromCache() const;
|
||||||
|
|
||||||
@@ -70,7 +82,7 @@ namespace BlackCore
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int m_entities = BlackMisc::Network::CEntityFlags::NoEntity; //!< BlackMisc::Network::CEntityFlags::Entity
|
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;
|
BlackMisc::PhysicalQuantities::CTime m_cacheLifetime;
|
||||||
|
|
||||||
BLACK_METACLASS(
|
BLACK_METACLASS(
|
||||||
@@ -106,6 +118,15 @@ namespace BlackCore
|
|||||||
//! Will read from swift DB
|
//! Will read from swift DB
|
||||||
bool possiblyReadsFromSwiftDb() const;
|
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
|
//! Entities which will use cache or DB, so no canceled or ignored ones
|
||||||
BlackMisc::Network::CEntityFlags::Entity getEntitesCachedOrReadFromDB() const;
|
BlackMisc::Network::CEntityFlags::Entity getEntitesCachedOrReadFromDB() const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user