diff --git a/src/blackcore/db/airportdatareader.cpp b/src/blackcore/db/airportdatareader.cpp index 1a6b732af..a3778e6c3 100644 --- a/src/blackcore/db/airportdatareader.cpp +++ b/src/blackcore/db/airportdatareader.cpp @@ -239,7 +239,7 @@ namespace BlackCore this->emitAndLogDataRead(CEntityFlags::AirportEntity, size, res); } - void CAirportDataReader::ps_read(CEntityFlags::Entity entity, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) + void CAirportDataReader::read(CEntityFlags::Entity entity, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) { this->threadAssertCheck(); if (!this->doWorkCheck()) { return; } diff --git a/src/blackcore/db/airportdatareader.h b/src/blackcore/db/airportdatareader.h index 775ad0e65..e94629adb 100644 --- a/src/blackcore/db/airportdatareader.h +++ b/src/blackcore/db/airportdatareader.h @@ -69,11 +69,6 @@ namespace BlackCore virtual bool hasChangedUrl(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CUrl &oldUrlInfo, BlackMisc::Network::CUrl &newUrlInfo) const override; virtual BlackMisc::Network::CUrl getDbServiceBaseUrl() const override; - private slots: - //! Read / re-read data file - void ps_read(BlackMisc::Network::CEntityFlags::Entity entity = BlackMisc::Network::CEntityFlags::DistributorLiveryModel, - BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode = BlackMisc::Db::CDbFlags::DbReading, const QDateTime &newerThan = QDateTime()); - private: BlackMisc::CData m_airportCache {this, &CAirportDataReader::airportCacheChanged}; //!< cache file std::atomic_bool m_syncedAirportCache { false }; //!< already synchronized? @@ -81,6 +76,9 @@ namespace BlackCore //! Reader URL (we read from where?) used to detect changes of location BlackMisc::CData m_readerUrlCache {this, &CAirportDataReader::baseUrlCacheChanged }; + //! \copydoc CDatabaseReader::read + void read(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) override; + //! Parse downloaded JSON file void parseAirportData(QNetworkReply *nwReplyPtr); diff --git a/src/blackcore/db/databasereader.cpp b/src/blackcore/db/databasereader.cpp index 907448224..92ed9e58e 100644 --- a/src/blackcore/db/databasereader.cpp +++ b/src/blackcore/db/databasereader.cpp @@ -221,14 +221,13 @@ namespace BlackCore if (entities == CEntityFlags::NoEntity) { return; } if (!this->isInternetAccessible(QStringLiteral("No network/internet access, will not read %1").arg(CEntityFlags::flagToString(entities)))) { return; } - //! \todo MS 2018-12 Error: CDatabaseReader has no ps_read method -> T490 - //! \todo KB 2018-12 https://dev.swift-project.org/T490 - const bool s = QMetaObject::invokeMethod(this, "ps_read", - Q_ARG(BlackMisc::Network::CEntityFlags::Entity, entities), - Q_ARG(BlackMisc::Db::CDbFlags::DataRetrievalModeFlag, mode), - Q_ARG(QDateTime, newerThan)); - Q_ASSERT_X(s, Q_FUNC_INFO, "Invoke failed"); - Q_UNUSED(s); + //! https://dev.swift-project.org/T490 + QPointer myself(this); + QTimer::singleShot(0, this, [ = ] + { + if (!sApp || sApp->isShuttingDown() || !myself) { return; } + this->read(entities, mode, newerThan); + }); } CDatabaseReader::JsonDatastoreResponse CDatabaseReader::transformReplyIntoDatastoreResponse(QNetworkReply *nwReply) const diff --git a/src/blackcore/db/databasereader.h b/src/blackcore/db/databasereader.h index a8cd11dce..0d4c3b3df 100644 --- a/src/blackcore/db/databasereader.h +++ b/src/blackcore/db/databasereader.h @@ -431,6 +431,10 @@ namespace BlackCore //! Network request progress virtual void networkReplyProgress(int logId, qint64 current, qint64 max, const QUrl &url) override; + + private: + //! Read / re-read data file + virtual void read(BlackMisc::Network::CEntityFlags::Entity entities, BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) = 0; }; } // ns } // ns diff --git a/src/blackcore/db/icaodatareader.cpp b/src/blackcore/db/icaodatareader.cpp index a9c942872..9911a2383 100644 --- a/src/blackcore/db/icaodatareader.cpp +++ b/src/blackcore/db/icaodatareader.cpp @@ -160,7 +160,7 @@ namespace BlackCore return this->getCountries().size(); } - void CIcaoDataReader::ps_read(CEntityFlags::Entity entities, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) + void CIcaoDataReader::read(CEntityFlags::Entity entities, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) { this->threadAssertCheck(); // runs in background thread if (!this->doWorkCheck()) { return; } diff --git a/src/blackcore/db/icaodatareader.h b/src/blackcore/db/icaodatareader.h index 43c7cee56..53513d54d 100644 --- a/src/blackcore/db/icaodatareader.h +++ b/src/blackcore/db/icaodatareader.h @@ -154,11 +154,6 @@ namespace BlackCore virtual bool hasChangedUrl(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CUrl &oldUrlInfo, BlackMisc::Network::CUrl &newUrlInfo) const override; virtual BlackMisc::Network::CUrl getDbServiceBaseUrl() const override; - private slots: - //! Read / re-read data - void ps_read(BlackMisc::Network::CEntityFlags::Entity entities, - BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan); - private: BlackMisc::CData m_aircraftIcaoCache {this, &CIcaoDataReader::aircraftIcaoCacheChanged }; BlackMisc::CData m_airlineIcaoCache {this, &CIcaoDataReader::airlineIcaoCacheChanged }; @@ -167,6 +162,10 @@ namespace BlackCore std::atomic_bool m_syncedAirlineIcaoCache { false }; //!< already synchronized? std::atomic_bool m_syncedCountryCache { false }; //!< already synchronized? + //! \copydoc CDatabaseReader::read + virtual void read(BlackMisc::Network::CEntityFlags::Entity entities, + BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) override; + //! Reader URL (we read from where?) used to detect changes of location BlackMisc::CData m_readerUrlCache {this, &CIcaoDataReader::baseUrlCacheChanged }; diff --git a/src/blackcore/db/infodatareader.cpp b/src/blackcore/db/infodatareader.cpp index e989abc59..7571ad41c 100644 --- a/src/blackcore/db/infodatareader.cpp +++ b/src/blackcore/db/infodatareader.cpp @@ -137,7 +137,7 @@ namespace BlackCore return sApp->getGlobalSetup().getDbInfoReaderUrl(); } - void CInfoDataReader::read() + void CInfoDataReader::readInfoData() { if (!this->doWorkCheck()) { return; } @@ -206,17 +206,25 @@ namespace BlackCore CEntityFlags::EntityFlag CInfoDataReader::getEntityForMode() const { if (m_mode == CDbFlags::DbReading) return CEntityFlags::DbInfoObjectEntity; - if (m_mode == CDbFlags::Shared) return CEntityFlags::SharedInfoObjectEntity; + if (m_mode == CDbFlags::Shared) return CEntityFlags::SharedInfoObjectEntity; qFatal("Wrong mode"); return CEntityFlags::NoEntity; } + void CInfoDataReader::read(CEntityFlags::Entity entities, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) + { + Q_UNUSED(entities); + Q_UNUSED(mode); + Q_UNUSED(newerThan); + Q_ASSERT_X(false, Q_FUNC_INFO, "Not implemented for CInfoDataReader"); + } + CUrl CInfoDataReader::getInfoObjectsUrl() const { switch (m_mode) { case CDbFlags::DbReading: return getDbInfoObjectsUrl(); - case CDbFlags::Shared: return getSharedInfoObjectsUrl(); + case CDbFlags::Shared: return getSharedInfoObjectsUrl(); default: qFatal("Wrong mode"); } return CUrl(); diff --git a/src/blackcore/db/infodatareader.h b/src/blackcore/db/infodatareader.h index 918bbe81d..404273700 100644 --- a/src/blackcore/db/infodatareader.h +++ b/src/blackcore/db/infodatareader.h @@ -48,7 +48,7 @@ namespace BlackCore bool areAllInfoObjectsRead() const; //! Allow to call directly, special for info objects reader - void read(); + void readInfoData(); //! URL depending on mode, i.e. shared/DB BlackMisc::Network::CUrl getInfoObjectsUrl() const; @@ -86,6 +86,9 @@ namespace BlackCore //! \remark CEntityFlags::DbInfoObjectEntity or CEntityFlags::SharedInfoObjectEntity BlackMisc::Network::CEntityFlags::EntityFlag getEntityForMode() const; + //! \copydoc CDatabaseReader::read + virtual void read(BlackMisc::Network::CEntityFlags::Entity entities, BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) override; + BlackMisc::Db::CDbFlags::DataRetrievalModeFlag m_mode; //!< shared or DB web service? BlackMisc::Db::CDbInfoList m_infoObjects; BlackMisc::Network::CUrl m_urlInfoObjects; diff --git a/src/blackcore/db/modeldatareader.cpp b/src/blackcore/db/modeldatareader.cpp index 694930bde..427cb5cf1 100644 --- a/src/blackcore/db/modeldatareader.cpp +++ b/src/blackcore/db/modeldatareader.cpp @@ -179,7 +179,7 @@ namespace BlackCore this->getDistributorsCount() > 0; } - void CModelDataReader::ps_read(CEntityFlags::Entity entities, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) + void CModelDataReader::read(CEntityFlags::Entity entities, CDbFlags::DataRetrievalModeFlag mode, const QDateTime &newerThan) { this->threadAssertCheck(); if (!this->doWorkCheck()) { return; } diff --git a/src/blackcore/db/modeldatareader.h b/src/blackcore/db/modeldatareader.h index 11a26a3e9..d1a1cd67e 100644 --- a/src/blackcore/db/modeldatareader.h +++ b/src/blackcore/db/modeldatareader.h @@ -154,12 +154,6 @@ namespace BlackCore virtual bool hasChangedUrl(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CUrl &oldUrlInfo, BlackMisc::Network::CUrl &newUrlInfo) const override; virtual BlackMisc::Network::CUrl getDbServiceBaseUrl() const override; - private slots: - //! Read / re-read data file - void ps_read(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::DistributorLiveryModel, - BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode = BlackMisc::Db::CDbFlags::DbReading, - const QDateTime &newerThan = QDateTime()); - private: BlackMisc::CData m_liveryCache { this, &CModelDataReader::liveryCacheChanged }; BlackMisc::CData m_modelCache { this, &CModelDataReader::modelCacheChanged }; @@ -168,6 +162,10 @@ namespace BlackCore std::atomic_bool m_syncedModelCache { false }; //!< already synchronized? std::atomic_bool m_syncedDistributorCache { false }; //!< already synchronized? + //! \copydoc CDatabaseReader::read + virtual void read(BlackMisc::Network::CEntityFlags::Entity entities = BlackMisc::Network::CEntityFlags::DistributorLiveryModel, + BlackMisc::Db::CDbFlags::DataRetrievalModeFlag mode = BlackMisc::Db::CDbFlags::DbReading, const QDateTime &newerThan = QDateTime()) override; + //! Reader URL (we read from where?) used to detect changes of location BlackMisc::CData m_readerUrlCache { this, &CModelDataReader::baseUrlCacheChanged }; diff --git a/src/blackcore/vatsim/vatsimstatusfilereader.cpp b/src/blackcore/vatsim/vatsimstatusfilereader.cpp index 69c5d773e..f59e352ab 100644 --- a/src/blackcore/vatsim/vatsimstatusfilereader.cpp +++ b/src/blackcore/vatsim/vatsimstatusfilereader.cpp @@ -47,7 +47,7 @@ namespace BlackCore void CVatsimStatusFileReader::readInBackgroundThread() { - const bool s = QMetaObject::invokeMethod(this, &CVatsimStatusFileReader::ps_read); + const bool s = QMetaObject::invokeMethod(this, &CVatsimStatusFileReader::read); Q_ASSERT_X(s, Q_FUNC_INFO, "Invoke failed"); Q_UNUSED(s); } @@ -62,7 +62,7 @@ namespace BlackCore return m_lastGoodSetup.get().getDataFileUrls(); } - void CVatsimStatusFileReader::ps_read() + void CVatsimStatusFileReader::read() { this->threadAssertCheck(); if (!this->doWorkCheck()) { return; } diff --git a/src/blackcore/vatsim/vatsimstatusfilereader.h b/src/blackcore/vatsim/vatsimstatusfilereader.h index 14e912698..17fa4e53b 100644 --- a/src/blackcore/vatsim/vatsimstatusfilereader.h +++ b/src/blackcore/vatsim/vatsimstatusfilereader.h @@ -45,7 +45,6 @@ namespace BlackCore //! \threadsafe BlackMisc::Network::CUrlList getDataFileUrls() const; - public slots: //! Start reading in own thread void readInBackgroundThread(); @@ -56,11 +55,10 @@ namespace BlackCore //! Data have been read void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number); - private slots: - //! Read / re-read data file - void ps_read(); - private: + //! Read / re-read data file + void read(); + //! Data have been read, parse VATSIM file void parseVatsimFile(QNetworkReply *nwReply); diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index 558ae2587..2079bd146 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -1168,7 +1168,7 @@ namespace BlackCore { if (!myself || m_shuttingDown) { return; } if (!sApp || sApp->isShuttingDown()) { return; } - m_dbInfoDataReader->read(); // trigger read of info objects + m_dbInfoDataReader->readInfoData(); // trigger read of info objects }); } } @@ -1209,7 +1209,7 @@ namespace BlackCore QTimer::singleShot(25, m_sharedInfoDataReader, [ = ]() { if (!myself || m_shuttingDown) { return; } - m_sharedInfoDataReader->read(); + m_sharedInfoDataReader->readInfoData(); }); }