From e6f0db73c5769b7c858397490571da6ee57287fd Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 27 May 2016 23:32:39 +0200 Subject: [PATCH] refs #656, using deferred for large caches --- src/blackcore/data/dbcaches.h | 15 +++++++++++++++ src/blackmisc/simulation/data/modelcaches.cpp | 10 ++++++---- src/blackmisc/simulation/data/modelcaches.h | 3 +++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/blackcore/data/dbcaches.h b/src/blackcore/data/dbcaches.h index 9e59d3064..fd916fa8f 100644 --- a/src/blackcore/data/dbcaches.h +++ b/src/blackcore/data/dbcaches.h @@ -33,6 +33,9 @@ namespace BlackCore //! Default value static const BlackMisc::Simulation::CAircraftModelList &defaultValue(); + //! Defer loading + static constexpr bool isDeferred() { return true; } + //! Key in data cache static const char *key() { return "dbmodelcache"; } }; @@ -43,6 +46,9 @@ namespace BlackCore //! Default value static const BlackMisc::Aviation::CAirlineIcaoCodeList &defaultValue(); + //! Defer loading + static constexpr bool isDeferred() { return true; } + //! Key in data cache static const char *key() { return "dbairlineicaocache"; } }; @@ -54,6 +60,9 @@ namespace BlackCore //! Default value static const BlackMisc::Aviation::CAircraftIcaoCodeList &defaultValue(); + //! Defer loading + static constexpr bool isDeferred() { return true; } + //! Key in data cache static const char *key() { return "dbaircrafticaocache"; } }; @@ -64,6 +73,9 @@ namespace BlackCore //! Default value static const BlackMisc::CCountryList &defaultValue(); + //! Defer loading (no currently small) + static constexpr bool isDeferred() { return false; } + //! Key in data cache static const char *key() { return "dbcountrycache"; } }; @@ -74,6 +86,9 @@ namespace BlackCore //! Default value static const BlackMisc::Aviation::CLiveryList &defaultValue(); + //! Defer loading + static constexpr bool isDeferred() { return true; } + //! Key in data cache static const char *key() { return "dbliverycache"; } }; diff --git a/src/blackmisc/simulation/data/modelcaches.cpp b/src/blackmisc/simulation/data/modelcaches.cpp index d637e70a0..1299f6ebd 100644 --- a/src/blackmisc/simulation/data/modelcaches.cpp +++ b/src/blackmisc/simulation/data/modelcaches.cpp @@ -43,6 +43,7 @@ namespace BlackMisc CModelCaches::CModelCaches(QObject *parent) : IMultiSimulatorModelCaches(parent) { this->m_currentSimulator.synchronize(); + this->syncronizeCache(this->m_currentSimulator.getCopy()); } CAircraftModelList CModelCaches::getCachedModels(const CSimulatorInfo &simulator) const @@ -123,6 +124,7 @@ namespace BlackMisc CModelSetCaches::CModelSetCaches(QObject *parent) : IMultiSimulatorModelCaches(parent) { this->m_currentSimulator.synchronize(); + this->syncronizeCache(this->m_currentSimulator.getCopy()); } CAircraftModelList CModelSetCaches::getCachedModels(const CSimulatorInfo &simulator) const @@ -189,10 +191,10 @@ namespace BlackMisc if (m.isFailure()) { CLogMessage::preformatted(m); } switch (simulator.getSimulator()) { - case CSimulatorInfo::FS9: return this->m_modelCacheFs9.synchronize(); break; - case CSimulatorInfo::FSX: return this->m_modelCacheFsx.synchronize(); break; - case CSimulatorInfo::P3D: return this->m_modelCacheP3D.synchronize(); break; - case CSimulatorInfo::XPLANE: return this->m_modelCacheXP.synchronize(); break; + case CSimulatorInfo::FS9: this->m_modelCacheFs9.synchronize(); break; + case CSimulatorInfo::FSX: this->m_modelCacheFsx.synchronize(); break; + case CSimulatorInfo::P3D: this->m_modelCacheP3D.synchronize(); break; + case CSimulatorInfo::XPLANE: this->m_modelCacheXP.synchronize(); break; default: Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator"); } diff --git a/src/blackmisc/simulation/data/modelcaches.h b/src/blackmisc/simulation/data/modelcaches.h index a05017d7f..fd617d98a 100644 --- a/src/blackmisc/simulation/data/modelcaches.h +++ b/src/blackmisc/simulation/data/modelcaches.h @@ -30,6 +30,9 @@ namespace BlackMisc //! Trait for model cache struct ModelCache : public BlackMisc::CDataTrait { + //! Defer loading + static constexpr bool isDeferred() { return true; } + //! Default value static const BlackMisc::Simulation::CAircraftModelList &defaultValue() {