From 2ccf3fd4a2089721f2b3801288bb68c25578f089 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 27 Nov 2016 01:21:53 +0100 Subject: [PATCH] refs #787, caches/model set loader * Caches initialized * simulators with model set --- .../simulation/aircraftmodelsetloader.cpp | 5 +++++ src/blackmisc/simulation/aircraftmodelsetloader.h | 3 +++ src/blackmisc/simulation/data/modelcaches.cpp | 15 +++++++++++++++ src/blackmisc/simulation/data/modelcaches.h | 6 +++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/simulation/aircraftmodelsetloader.cpp b/src/blackmisc/simulation/aircraftmodelsetloader.cpp index 469bd13c1..2ec76b531 100644 --- a/src/blackmisc/simulation/aircraftmodelsetloader.cpp +++ b/src/blackmisc/simulation/aircraftmodelsetloader.cpp @@ -126,6 +126,11 @@ namespace BlackMisc return this->getSimulator().matchesAny(info); } + CSimulatorInfo CAircraftModelSetLoader::simulatorsWithInitializedModelSet() const + { + return this->m_caches.simulatorsWithInitializedCache(); + } + void CAircraftModelSetLoader::gracefulShutdown() { // void diff --git a/src/blackmisc/simulation/aircraftmodelsetloader.h b/src/blackmisc/simulation/aircraftmodelsetloader.h index cf327a21e..3dcd8c5c6 100644 --- a/src/blackmisc/simulation/aircraftmodelsetloader.h +++ b/src/blackmisc/simulation/aircraftmodelsetloader.h @@ -84,6 +84,9 @@ namespace BlackMisc //! Is the given simulator supported? bool supportsSimulator(const BlackMisc::Simulation::CSimulatorInfo &info); + //! Simulators with initialized caches + CSimulatorInfo simulatorsWithInitializedModelSet() const; + //! Shutdown void gracefulShutdown(); diff --git a/src/blackmisc/simulation/data/modelcaches.cpp b/src/blackmisc/simulation/data/modelcaches.cpp index a3bb6f08e..5b1ad6d9e 100644 --- a/src/blackmisc/simulation/data/modelcaches.cpp +++ b/src/blackmisc/simulation/data/modelcaches.cpp @@ -88,6 +88,21 @@ namespace BlackMisc return true; } + CSimulatorInfo IMultiSimulatorModelCaches::simulatorsWithInitializedCache() const + { + static const QDateTime outdated = QDateTime::currentDateTimeUtc().addDays(-365 * 5); + CSimulatorInfo withInitializedCache; + for (const CSimulatorInfo &simInfo : CSimulatorInfo::allSimulators().asSingleSimulatorSet()) + { + const QDateTime ts = this->getCacheTimestamp(simInfo); + if (ts.isValid() && ts > outdated) + { + withInitializedCache.add(simInfo); + } + } + return withInitializedCache; + } + CModelCaches::CModelCaches(bool synchronizeCache, QObject *parent) : IMultiSimulatorModelCaches(parent) { this->m_currentSimulator.synchronize(); diff --git a/src/blackmisc/simulation/data/modelcaches.h b/src/blackmisc/simulation/data/modelcaches.h index 415461507..147049e3e 100644 --- a/src/blackmisc/simulation/data/modelcaches.h +++ b/src/blackmisc/simulation/data/modelcaches.h @@ -166,6 +166,10 @@ namespace BlackMisc //! \threadsafe virtual QDateTime getCacheTimestamp(const BlackMisc::Simulation::CSimulatorInfo &simulator) const = 0; + //! Initilaized caches for which simulator + //! \threadsafe + BlackMisc::Simulation::CSimulatorInfo simulatorsWithInitializedCache() const; + //! Timestamp QDateTime getSynchronizedTimestamp(const BlackMisc::Simulation::CSimulatorInfo &simulator); @@ -194,7 +198,7 @@ namespace BlackMisc //! \threadsafe virtual BlackMisc::Simulation::CSimulatorInfo getCurrentSimulator() const = 0; - //!Selected simulator + //! Selected simulator virtual BlackMisc::CStatusMessage setCurrentSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) = 0; //! \copydoc IModelsPerSimulatorSetable::setModels