6 #ifndef SWIFT_CORE_WEBDATASERVICES_H
7 #define SWIFT_CORE_WEBDATASERVICES_H
16 #include <QStringList>
43 class CLogCategoryList;
51 class CSimulatedAircraft;
52 class CAutoPublishData;
60 class CVatsimDataFileReader;
61 class CVatsimMetarReader;
62 class CVatsimStatusFileReader;
63 class CVatsimServerFileReader;
68 class CAirportDataReader;
69 class CDatabaseWriter;
70 class CDatabaseReader;
71 class CIcaoDataReader;
72 class CModelDataReader;
73 class CInfoDataReader;
85 static const QStringList &getLogCategories();
95 void gracefulShutdown();
113 swift::misc::network::CEntityFlags::Entity allDbEntitiesForUsedReaders()
const;
151 int getDistributorsCount()
const;
178 int getLiveriesCount()
const;
207 int getModelsCount()
const;
211 QSet<int> getModelDbKeys()
const;
215 QStringList getModelStrings(
bool sort =
false)
const;
219 QStringList getModelCompleterStrings(
bool sorted =
true,
221 swift::misc::simulation::CSimulatorInfo::All })
const;
226 getModelsForAircraftDesignatorAndLiveryCombinedCode(
const QString &aircraftDesignator,
227 const QString &combinedCode)
const;
235 bool containsModelString(
const QString &modelString)
const;
247 int getAircraftIcaoCodesCount()
const;
255 int getAircraftIcaoCodesForDesignatorCount(
const QString &designator)
const;
272 int getAircraftCategoriesCount()
const;
276 bool containsAircraftIcaoDesignator(
const QString &designator)
const;
297 bool containsAirlineIcaoDesignator(
const QString &designator)
const;
302 getAirlineIcaoCodeForUniqueDesignatorOrDefault(
const QString &designator,
bool preferOperatingAirlines)
const;
307 getAirlineIcaoCodeForUniqueIataCodeOrDefault(
const QString &iataCode)
const;
311 QStringList getAirlineNames()
const;
315 QStringList getTelephonyDesignators()
const;
319 int getAirlineIcaoCodesCount()
const;
327 int getAirlineIcaoCodesForDesignatorCount(
const QString &designator)
const;
350 int getCountriesCount()
const;
366 int getAirportsCount()
const;
403 void triggerReadOfDbInfoObjects();
406 void triggerReadOfSharedInfoObjects();
410 swift::misc::network::CEntityFlags::Entity triggerRead(swift::misc::network::CEntityFlags::Entity whatToRead,
411 const QDateTime &newerThan = QDateTime());
414 swift::misc::network::CEntityFlags::Entity
415 triggerLoadingDirectlyFromDb(swift::misc::network::CEntityFlags::Entity whatToRead,
416 const QDateTime &newerThan = QDateTime());
419 swift::misc::network::CEntityFlags::Entity
420 triggerLoadingDirectlyFromSharedFiles(swift::misc::network::CEntityFlags::Entity whatToRead,
421 bool checkCacheTsUpfront);
425 QDateTime getCacheTimestamp(swift::misc::network::CEntityFlags::Entity entity)
const;
429 QDateTime getLatestDbEntityCacheTimestamp()
const;
434 QDateTime getLatestDbEntityTimestamp(swift::misc::network::CEntityFlags::Entity entity)
const;
439 QDateTime getLatestSharedInfoObjectTimestamp(swift::misc::network::CEntityFlags::Entity entity)
const;
443 swift::misc::network::CEntityFlags::Entity
444 getEntitiesWithNewerSharedFile(swift::misc::network::CEntityFlags::Entity entities)
const;
449 swift::misc::network::CEntityFlags::Entity
450 getEmptyEntities(swift::misc::network::CEntityFlags::Entity entities =
456 swift::misc::network::CEntityFlags::Entity getSynchronizedEntitiesWithNewerSharedFileOrEmpty(
457 bool syncData =
true,
462 int getCacheCount(swift::misc::network::CEntityFlags::Entity entity)
const;
466 int getDbInfoObjectCount(swift::misc::network::CEntityFlags::Entity entity)
const;
470 int getDbInfoObjectsCount(swift::misc::network::CEntityFlags::Entity entities,
471 bool stopIfNotFound =
true)
const;
475 int getSharedInfoObjectCount(swift::misc::network::CEntityFlags::Entity entity)
const;
478 QString getDbReadersLog(
const QString &separator =
"\n")
const;
481 QString getReadersLog(
const QString &separator =
"\n")
const;
484 bool hasSuccesfullyConnectedSwiftDb()
const;
487 bool hasDbAircraftData()
const;
490 bool hasDbModelData()
const;
493 bool hasDbIcaoData()
const;
496 void admitDbCaches(swift::misc::network::CEntityFlags::Entity entities);
500 void synchronizeDbCaches(swift::misc::network::CEntityFlags::Entity entities);
503 bool writeDbDataToDisk(
const QString &dir);
508 bool readDbDataFromDisk(
const QString &dir,
bool inBackground,
bool overrideNewerOnly);
521 void dataRead(swift::misc::network::CEntityFlags::Entity entity,
526 qint64 current, qint64 max,
const QUrl &url);
569 void readDeferredInBackground(swift::misc::network::CEntityFlags::Entity entities,
int delayMs);
573 void readInBackground(
581 void vatsimDataFileRead(
int kB);
584 void vatsimStatusFileRead(
int bytes);
587 void vatsimServerFileRead(
int bytes);
590 void startVatsimServerFileReader();
593 void readFromSwiftReader(swift::misc::network::CEntityFlags::Entity entities,
597 void initReaders(CWebReaderFlags::WebReader readersNeeded, swift::misc::network::CEntityFlags::Entity entities);
600 void initDbInfoObjectReaderAndTriggerRead();
603 void initSharedInfoObjectReaderAndTriggerRead();
612 bool signalEntitiesAlreadyRead(swift::misc::network::CEntityFlags::Entity entities);
615 int getInfoObjectCount(swift::misc::network::CEntityFlags::Entity entity,
620 swift::misc::network::CEntityFlags::Entity getDbEntitiesWithCachedData()
const;
624 swift::misc::network::CEntityFlags::Entity
625 getDbEntitiesWithTimestampNewerThan(
const QDateTime &threshold)
const;
628 bool waitForDbInfoObjectsThenRead(swift::misc::network::CEntityFlags::Entity entities);
632 bool waitForSharedInfoObjectsThenRead(swift::misc::network::CEntityFlags::Entity entities);
636 bool waitForInfoObjectsThenRead(swift::misc::network::CEntityFlags::Entity entities,
const QString &info,
639 swift::misc::network::CEntityFlags::Entity m_entitiesPeriodicallyRead =
641 swift::misc::network::CEntityFlags::Entity m_swiftDbEntitiesRead =
644 std::atomic_bool m_shuttingDown {
false };
645 QDateTime m_dbInfoObjectTimeout;
646 QDateTime m_sharedInfoObjectsTimeout;
647 QSet<swift::misc::network::CEntityFlags::Entity> m_signalledEntities;
Encapsulates reading data from web sources.
void databaseReaderMessages(const swift::misc::CStatusMessageList &messages)
Database reader messages.
void swiftDbAirportsRead()
Airports read.
void sharedInfoObjectsRead()
Shared info objects read.
vatsim::CVatsimMetarReader * getMetarReader() const
Metar reader.
void swiftDbModelsRead()
All models read.
db::CDatabaseWriter * getDatabaseWriter() const
DB writer class.
swift::core::db::CInfoDataReader * getDbInfoDataReader() const
DB info data reader.
swift::misc::CStatusMessageList initDbCachesFromLocalResourceFiles(swift::misc::network::CEntityFlags::Entity entities, bool inBackground)
Init caches from local DB files per given entities.
void entityDownloadProgress(swift::misc::network::CEntityFlags::Entity entity, int logId, int progress, qint64 current, qint64 max, const QUrl &url)
Download progress for an entity.
swift::core::db::CInfoDataReader * getSharedInfoDataReader() const
Shared info data reader.
void dataRead(swift::misc::network::CEntityFlags::Entity entity, swift::misc::network::CEntityFlags::ReadState state, int number, const QUrl &url)
Combined read signal.
void swiftDbModelMatchingEntitiesRead()
All entities needed for model matching.
swift::misc::simulation::CDistributor smartDistributorSelector() const
Use distributor object to select the best complete distributor from DB.
void swiftDbAirlineIcaoRead()
Airline ICAO data read.
void swiftDbDataRead(bool success)
DB data read.
vatsim::CVatsimDataFileReader * getVatsimDataFileReader() const
Data file reader.
void swiftDbAllIcaoEntitiesRead()
All ICAO entities.
void swiftDbAircraftIcaoRead()
Aircraft ICAO data read.
void swiftDbAllDataRead()
All swift DB data have been read.
Reader for airport database data.
Value object encapsulating a list of reader configs.
Specialized version of threaded reader for DB data.
Read ICAO data from Database.
Read information about data from Database or shared files such as when updated and number of entries.
Read model related data from Database.
Sole purpose is to read the URLs where VATSIM data can be downloaded.
Value object encapsulating a list of countries.
Status messages, e.g. from Core -> GUI.
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Value object encapsulating information about an airpot.
Value object encapsulating information of airport ICAO data.
Value object for a list of airports.
Value object for a list of ATC stations.
Value object encapsulating information of a callsign.
Value object encapsulating information about an airpot.
Value object for a list of airports.
@ AllDbEntities
all DB stuff
ReadState
State of operation.
Value object encapsulating a list of servers.
Value object encapsulating information of a location, kind of simplified CValueObject compliant versi...
Value object encapsulating a list of voice rooms.
Value object encapsulating information for voice capabilities.
Aircraft model (used by another pilot, my models on disk)
Value object encapsulating a list of aircraft models.
Objects that can be use for auto-publishing. Auto publishing means we sent those data to the DB.
Value object encapsulating information of software distributor.
Value object encapsulating a list of distributors.
Comprehensive information of an aircraft.
Simple hardcoded info about the corresponding simulator.
Backend services of the swift project, like dealing with the network or the simulators.
Free functions in swift::misc.
#define SWIFT_CORE_EXPORT
Export a class or function from the library.