mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 00:16:51 +08:00
refs #452 signals in reader classes. adjusted METAR reader
* renamed to connectDataReadSignal * removed unused individual signals, e.g. vatsimMetarsRead -> replace by data read signal + entity flag * added data in METAR class (kept there, not in airspace monitor) -> reader aware
This commit is contained in:
committed by
Mathew Sutcliffe
parent
29d436ee67
commit
8827b68b3b
@@ -63,9 +63,8 @@ namespace BlackCore
|
||||
Q_ASSERT_X(webDataReader, Q_FUNC_INFO, "Missing data reader");
|
||||
if (webDataReader)
|
||||
{
|
||||
this->connect(webDataReader->getBookingReader(), &CVatsimBookingReader::dataRead, this, &CAirspaceMonitor::ps_receivedBookings);
|
||||
this->connect(webDataReader->getDataFileReader(), &CVatsimDataFileReader::dataRead, this, &CAirspaceMonitor::ps_receivedDataFile);
|
||||
this->connect(webDataReader->getMetarReader(), &CVatsimMetarReader::dataRead, this, &CAirspaceMonitor::ps_updateMetars);
|
||||
this->connect(webDataReader->getBookingReader(), &CVatsimBookingReader::atcBookingsRead, this, &CAirspaceMonitor::ps_receivedBookings);
|
||||
this->connect(webDataReader->getDataFileReader(), &CVatsimDataFileReader::dataFileRead, this, &CAirspaceMonitor::ps_receivedDataFile);
|
||||
}
|
||||
|
||||
// Force snapshot in the main event loop
|
||||
@@ -335,11 +334,6 @@ namespace BlackCore
|
||||
return m_otherClients;
|
||||
}
|
||||
|
||||
CMetar CAirspaceMonitor::getMetar(const BlackMisc::Aviation::CAirportIcaoCode &airportIcaoCode)
|
||||
{
|
||||
return m_metars.findFirstByOrDefault(&CMetar::getAirportIcaoCode, airportIcaoCode);
|
||||
}
|
||||
|
||||
CAtcStation CAirspaceMonitor::getAtcStationForComUnit(const CComSystem &comSystem)
|
||||
{
|
||||
CAtcStation station;
|
||||
@@ -391,7 +385,6 @@ namespace BlackCore
|
||||
|
||||
void CAirspaceMonitor::clear()
|
||||
{
|
||||
m_metars.clear();
|
||||
m_flightPlanCache.clear();
|
||||
m_modelCache.clear();
|
||||
|
||||
@@ -606,12 +599,6 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CAirspaceMonitor::ps_updateMetars(const CMetarSet &metars)
|
||||
{
|
||||
Q_ASSERT(BlackCore::isCurrentThreadObjectThread(this));
|
||||
m_metars = metars;
|
||||
}
|
||||
|
||||
void CAirspaceMonitor::ps_sendReadyForModelMatching(const CCallsign &callsign, int trial)
|
||||
{
|
||||
// some checks for special conditions, e.g. logout -> empty list, but still signals pending
|
||||
|
||||
@@ -123,9 +123,6 @@ namespace BlackCore
|
||||
//! Returns a list of other clients corresponding to the given callsigns
|
||||
BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const;
|
||||
|
||||
//! Returns a METAR for the given airport, if available
|
||||
BlackMisc::Weather::CMetar getMetar(const BlackMisc::Aviation::CAirportIcaoCode &airportIcaoCode);
|
||||
|
||||
//! Returns the current online ATC stations
|
||||
BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const { return m_atcStationsOnline; }
|
||||
|
||||
@@ -213,7 +210,6 @@ namespace BlackCore
|
||||
BlackMisc::Aviation::CAtcStationList m_atcStationsBooked;
|
||||
BlackMisc::Network::CClientList m_otherClients;
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_aircraftInRange; //!< aircraft, thread safe access required
|
||||
BlackMisc::Weather::CMetarSet m_metars;
|
||||
|
||||
// hashs, because not sorted by key but keeping order
|
||||
CSituationsPerCallsign m_situationsByCallsign; //!< situations, for performance reasons per callsign, thread safe access required
|
||||
@@ -284,7 +280,6 @@ namespace BlackCore
|
||||
void ps_frequencyReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CFrequency &frequency);
|
||||
void ps_receivedBookings(const BlackMisc::Aviation::CAtcStationList &bookedStations);
|
||||
void ps_receivedDataFile();
|
||||
void ps_updateMetars(const BlackMisc::Weather::CMetarSet &metars);
|
||||
void ps_aircraftConfigReceived(const BlackMisc::Aviation::CCallsign &callsign, const QJsonObject &jsonObject, bool isFull);
|
||||
void ps_aircraftInterimUpdateReceived(const BlackMisc::Aviation::CAircraftSituation &situation);
|
||||
void ps_sendInterimPositions();
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "blackmisc/sequence.h"
|
||||
#include "blackmisc/aviation/atcstation.h"
|
||||
#include "blackmisc/network/user.h"
|
||||
#include "blackmisc/network/entityflags.h"
|
||||
#include "blackmisc/logmessage.h"
|
||||
#include "vatsimbookingreader.h"
|
||||
|
||||
@@ -146,7 +147,8 @@ namespace BlackCore
|
||||
bookedStations.push_back(bookedStation);
|
||||
}
|
||||
this->setUpdateTimestamp(updateTimestamp); // thread safe update
|
||||
emit this->dataRead(bookedStations);
|
||||
emit this->atcBookingsRead(bookedStations);
|
||||
emit this->dataRead(CEntityFlags::BookingEntity, CEntityFlags::ReadFinished, bookedStations.size());
|
||||
} // node
|
||||
}
|
||||
else
|
||||
@@ -154,6 +156,7 @@ namespace BlackCore
|
||||
// network error
|
||||
CLogMessage(this).warning("Reading bookings failed %1 %2") << nwReply->errorString() << nwReply->url().toString();
|
||||
nwReply->abort();
|
||||
emit this->dataRead(CEntityFlags::BookingEntity, CEntityFlags::ReadFailed, 0);
|
||||
}
|
||||
} // method
|
||||
|
||||
|
||||
@@ -37,7 +37,10 @@ namespace BlackCore
|
||||
|
||||
signals:
|
||||
//! Bookings have been read and converted to BlackMisc::Aviation::CAtcStationList
|
||||
void dataRead(const BlackMisc::Aviation::CAtcStationList &bookedStations);
|
||||
void atcBookingsRead(const BlackMisc::Aviation::CAtcStationList &bookedStations);
|
||||
|
||||
//! Data have been read
|
||||
void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);
|
||||
|
||||
private slots:
|
||||
//! Bookings have been read
|
||||
@@ -50,7 +53,7 @@ namespace BlackCore
|
||||
private:
|
||||
QString m_serviceUrl; //!< URL of the service
|
||||
QNetworkAccessManager *m_networkManager = nullptr;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif // guard
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "blackmisc/aviation/atcstation.h"
|
||||
#include "blackmisc/network/user.h"
|
||||
#include "blackmisc/network/server.h"
|
||||
#include "blackmisc/network/entityflags.h"
|
||||
#include "blackmisc/logmessage.h"
|
||||
#include "vatsimdatafilereader.h"
|
||||
|
||||
@@ -362,13 +363,15 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
// data read finished
|
||||
emit this->dataRead(lines.count());
|
||||
emit this->dataFileRead(lines.count());
|
||||
emit this->dataRead(CEntityFlags::VatsimDataFile, CEntityFlags::ReadFinished, lines.count());
|
||||
}
|
||||
else
|
||||
{
|
||||
// network error
|
||||
CLogMessage(this).warning("Reading VATSIM data file failed %1 %2") << nwReply->errorString() << nwReply->url().toString();
|
||||
nwReply->abort();
|
||||
emit this->dataRead(CEntityFlags::VatsimDataFile, CEntityFlags::ReadFailed, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,10 @@ namespace BlackCore
|
||||
|
||||
signals:
|
||||
//! Data have been read
|
||||
void dataRead(int lines);
|
||||
void dataFileRead(int lines);
|
||||
|
||||
//! Data have been read
|
||||
void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);
|
||||
|
||||
private slots:
|
||||
//! Data have been read, parse VATSIM file
|
||||
@@ -142,6 +145,6 @@ namespace BlackCore
|
||||
static Section currentLineToSection(const QString ¤tLine);
|
||||
|
||||
};
|
||||
}
|
||||
} // ns
|
||||
|
||||
#endif // guard
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
*/
|
||||
|
||||
#include "vatsimmetarreader.h"
|
||||
#include "blackmisc/network/entityflags.h"
|
||||
#include "blackmisc/sequence.h"
|
||||
#include "blackmisc/logmessage.h"
|
||||
#include <QTextStream>
|
||||
#include <QFile>
|
||||
#include <QReadLocker>
|
||||
#include <QWriteLocker>
|
||||
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Network;
|
||||
using namespace BlackMisc::Weather;
|
||||
|
||||
namespace BlackCore
|
||||
@@ -34,6 +38,24 @@ namespace BlackCore
|
||||
Q_UNUSED(s);
|
||||
}
|
||||
|
||||
CMetarSet CVatsimMetarReader::getMetars() const
|
||||
{
|
||||
QReadLocker l(&m_lock);
|
||||
return m_metars;
|
||||
}
|
||||
|
||||
CMetar CVatsimMetarReader::getMetarForAirport(const Aviation::CAirportIcaoCode &icao) const
|
||||
{
|
||||
QReadLocker l(&m_lock);
|
||||
return m_metars.getMetarForAirport(icao);
|
||||
}
|
||||
|
||||
int CVatsimMetarReader::getMetarsCount() const
|
||||
{
|
||||
QReadLocker l(&m_lock);
|
||||
return m_metars.size();
|
||||
}
|
||||
|
||||
void CVatsimMetarReader::ps_readMetars()
|
||||
{
|
||||
this->threadAssertCheck();
|
||||
@@ -85,19 +107,26 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
QWriteLocker l(&m_lock);
|
||||
m_metars = metars;
|
||||
}
|
||||
|
||||
// I could use those for logging, etc.
|
||||
Q_UNUSED(invalidMetars);
|
||||
if (invalidLineCount > 0)
|
||||
{
|
||||
CLogMessage(this).warning("Reading METARs failed for %1 entries") << invalidLineCount;
|
||||
}
|
||||
emit dataRead(metars);
|
||||
emit metarsRead(metars);
|
||||
emit dataRead(CEntityFlags::MetarEntity, CEntityFlags::ReadFinished, metars.size());
|
||||
}
|
||||
else
|
||||
{
|
||||
// network error
|
||||
CLogMessage(this).warning("Reading METARs failed %1 %2") << nwReply->errorString() << nwReply->url().toString();
|
||||
nwReply->abort();
|
||||
emit dataRead(CEntityFlags::MetarEntity, CEntityFlags::ReadFailed, 0);
|
||||
}
|
||||
} // method
|
||||
|
||||
|
||||
@@ -36,9 +36,24 @@ namespace BlackCore
|
||||
//! Read / re-read bookings
|
||||
void readInBackgroundThread();
|
||||
|
||||
//! Get METARs
|
||||
//! \threadsafe
|
||||
virtual BlackMisc::Weather::CMetarSet getMetars() const;
|
||||
|
||||
//! Get METAR for airport
|
||||
//! \threadsafe
|
||||
virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const;
|
||||
|
||||
//! Get METARs count
|
||||
//! \threadsafe
|
||||
virtual int getMetarsCount() const;
|
||||
|
||||
signals:
|
||||
//! METARs have been read and converted to BlackMisc::Weather::CMetarSet
|
||||
void dataRead(const BlackMisc::Weather::CMetarSet &metars);
|
||||
void metarsRead(const BlackMisc::Weather::CMetarSet &metars);
|
||||
|
||||
//! Data have been read
|
||||
void dataRead(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);
|
||||
|
||||
private slots:
|
||||
//! Decode METARs
|
||||
@@ -49,9 +64,10 @@ namespace BlackCore
|
||||
void ps_readMetars();
|
||||
|
||||
private:
|
||||
QString m_metarUrl; //!< URL of the service
|
||||
QNetworkAccessManager *m_networkManager = nullptr;
|
||||
QString m_metarUrl; //!< URL of the service
|
||||
QNetworkAccessManager *m_networkManager = nullptr;
|
||||
BlackMisc::Weather::CMetarDecoder m_metarDecoder;
|
||||
BlackMisc::Weather::CMetarSet m_metars;
|
||||
};
|
||||
}
|
||||
#endif // guard
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "blackmisc/logmessage.h"
|
||||
#include "blackmisc/worker.h"
|
||||
|
||||
using namespace BlackCore;
|
||||
using namespace BlackCore::Settings;
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Simulation;
|
||||
@@ -35,40 +36,7 @@ namespace BlackCore
|
||||
this->initWriters();
|
||||
}
|
||||
|
||||
QList<QMetaObject::Connection> CWebDataServices::connectVatsimDataSignals(QObject *receiver,
|
||||
std::function<void(int)> bookingsRead,
|
||||
std::function<void(int)> dataFileRead,
|
||||
std::function<void(int)> metarsRead)
|
||||
{
|
||||
// bind does not allow to define connection type
|
||||
// so anything in its own thread will be sent with this thread affinity
|
||||
Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver");
|
||||
QList<QMetaObject::Connection> cl;
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimBookingReader))
|
||||
{
|
||||
QMetaObject::Connection c1 = connect(this, &CWebDataServices::vatsimBookingsRead, receiver, bookingsRead);
|
||||
Q_ASSERT_X(c1, Q_FUNC_INFO, "connect failed (bookings)");
|
||||
cl.append(c1);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimDataReader))
|
||||
{
|
||||
QMetaObject::Connection c2 = connect(this, &CWebDataServices::vatsimDataFileRead, receiver, dataFileRead);
|
||||
Q_ASSERT_X(c2, Q_FUNC_INFO, "connect failed (data)");
|
||||
cl.append(c2);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimMetarReader))
|
||||
{
|
||||
QMetaObject::Connection c3 = connect(this, &CWebDataServices::vatsimMetarsRead, receiver, metarsRead);
|
||||
Q_ASSERT_X(c3, Q_FUNC_INFO, "connect failed (METARs)");
|
||||
cl.append(c3);
|
||||
}
|
||||
return cl;
|
||||
}
|
||||
|
||||
QList<QMetaObject::Connection> CWebDataServices::connectSwiftDatabaseSignals(QObject *receiver, std::function<void(CDbFlags::Entity, CDbFlags::ReadState, int)> dataRead)
|
||||
QList<QMetaObject::Connection> CWebDataServices::connectDataReadSignal(QObject *receiver, std::function<void(CEntityFlags::Entity, CEntityFlags::ReadState, int)> dataRead)
|
||||
{
|
||||
Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver");
|
||||
|
||||
@@ -76,21 +44,45 @@ namespace BlackCore
|
||||
// so anything in its own thread will be sent with this thread affinity
|
||||
QList<QMetaObject::Connection> cl;
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlags::IcaoDataReader))
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::IcaoDataReader))
|
||||
{
|
||||
Q_ASSERT_X(this->m_icaoDataReader, Q_FUNC_INFO, "Missing reader ICAO");
|
||||
QMetaObject::Connection con = connect(this->m_icaoDataReader, &CIcaoDataReader::readData, receiver, dataRead);
|
||||
QMetaObject::Connection con = connect(this->m_icaoDataReader, &CIcaoDataReader::dataRead, receiver, dataRead);
|
||||
Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed ICAO");
|
||||
cl.append(con);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlags::ModelReader))
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::ModelReader))
|
||||
{
|
||||
Q_ASSERT_X(this->m_modelDataReader, Q_FUNC_INFO, "Missing reader models");
|
||||
QMetaObject::Connection con = connect(this->m_modelDataReader, &CModelDataReader::readData, receiver, dataRead);
|
||||
QMetaObject::Connection con = connect(this->m_modelDataReader, &CModelDataReader::dataRead, receiver, dataRead);
|
||||
Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed models");
|
||||
cl.append(con);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimBookingReader))
|
||||
{
|
||||
Q_ASSERT_X(this->m_modelDataReader, Q_FUNC_INFO, "Missing reader bookings");
|
||||
QMetaObject::Connection con = connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, receiver, dataRead);
|
||||
Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed bookings");
|
||||
cl.append(con);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimDataReader))
|
||||
{
|
||||
Q_ASSERT_X(this->m_vatsimDataFileReader, Q_FUNC_INFO, "Missing reader data file");
|
||||
QMetaObject::Connection con = connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, receiver, dataRead);
|
||||
Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed VATSIM data file");
|
||||
cl.append(con);
|
||||
}
|
||||
|
||||
if (m_readerFlags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimMetarReader))
|
||||
{
|
||||
Q_ASSERT_X(this->m_vatsimMetarReader, Q_FUNC_INFO, "Missing reader bookings");
|
||||
QMetaObject::Connection con = connect(this->m_vatsimMetarReader, &CVatsimMetarReader::dataRead, receiver, dataRead);
|
||||
Q_ASSERT_X(con, Q_FUNC_INFO, "connect failed VATSIM METAR");
|
||||
cl.append(con);
|
||||
}
|
||||
return cl;
|
||||
}
|
||||
|
||||
@@ -149,32 +141,32 @@ namespace BlackCore
|
||||
return true;
|
||||
}
|
||||
|
||||
CDbFlags::Entity CWebDataServices::triggerRead(CDbFlags::Entity whatToRead)
|
||||
CEntityFlags::Entity CWebDataServices::triggerRead(CEntityFlags::Entity whatToRead)
|
||||
{
|
||||
CDbFlags::Entity triggeredRead = CDbFlags::NoEntity;
|
||||
CEntityFlags::Entity triggeredRead = CEntityFlags::NoEntity;
|
||||
if (m_vatsimDataFileReader)
|
||||
{
|
||||
if (whatToRead.testFlag(CDbFlags::VatsimDataFile))
|
||||
if (whatToRead.testFlag(CEntityFlags::VatsimDataFile))
|
||||
{
|
||||
m_vatsimDataFileReader->readInBackgroundThread();
|
||||
triggeredRead |= CDbFlags::VatsimDataFile;
|
||||
triggeredRead |= CEntityFlags::VatsimDataFile;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_vatsimBookingReader)
|
||||
{
|
||||
if (whatToRead.testFlag(CDbFlags::VatsimBookings))
|
||||
if (whatToRead.testFlag(CEntityFlags::BookingEntity))
|
||||
{
|
||||
m_vatsimBookingReader->readInBackgroundThread();
|
||||
triggeredRead |= CDbFlags::VatsimBookings;
|
||||
triggeredRead |= CEntityFlags::BookingEntity;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_icaoDataReader)
|
||||
{
|
||||
if (whatToRead.testFlag(CDbFlags::AircraftIcaoEntity) || whatToRead.testFlag(CDbFlags::AirlineIcaoEntity) || whatToRead.testFlag(CDbFlags::CountryEntity))
|
||||
if (whatToRead.testFlag(CEntityFlags::AircraftIcaoEntity) || whatToRead.testFlag(CEntityFlags::AirlineIcaoEntity) || whatToRead.testFlag(CEntityFlags::CountryEntity))
|
||||
{
|
||||
CDbFlags::Entity icaoEntities = whatToRead & CDbFlags::AllIcaoAndCountries;
|
||||
CEntityFlags::Entity icaoEntities = whatToRead & CEntityFlags::AllIcaoAndCountries;
|
||||
m_icaoDataReader->readInBackgroundThread(icaoEntities);
|
||||
triggeredRead |= icaoEntities;
|
||||
}
|
||||
@@ -182,9 +174,9 @@ namespace BlackCore
|
||||
|
||||
if (m_modelDataReader)
|
||||
{
|
||||
if (whatToRead.testFlag(CDbFlags::LiveryEntity) || whatToRead.testFlag(CDbFlags::DistributorEntity) || whatToRead.testFlag(CDbFlags::ModelEntity))
|
||||
if (whatToRead.testFlag(CEntityFlags::LiveryEntity) || whatToRead.testFlag(CEntityFlags::DistributorEntity) || whatToRead.testFlag(CEntityFlags::ModelEntity))
|
||||
{
|
||||
CDbFlags::Entity modelEntities = whatToRead & CDbFlags::DistributorLiveryModel;
|
||||
CEntityFlags::Entity modelEntities = whatToRead & CEntityFlags::DistributorLiveryModel;
|
||||
m_modelDataReader->readInBackgroundThread(modelEntities);
|
||||
triggeredRead |= modelEntities;
|
||||
}
|
||||
@@ -336,6 +328,24 @@ namespace BlackCore
|
||||
return CCountry();
|
||||
}
|
||||
|
||||
CMetarSet CWebDataServices::getMetars() const
|
||||
{
|
||||
if (m_vatsimMetarReader) { return m_vatsimMetarReader->getMetars(); }
|
||||
return CMetarSet();
|
||||
}
|
||||
|
||||
CMetar CWebDataServices::getMetarForAirport(const CAirportIcaoCode &icao) const
|
||||
{
|
||||
if (m_vatsimMetarReader) { return m_vatsimMetarReader->getMetarForAirport(icao); }
|
||||
return CMetar();
|
||||
}
|
||||
|
||||
int CWebDataServices::getMetarsCount() const
|
||||
{
|
||||
if (m_vatsimMetarReader) { return m_vatsimMetarReader->getMetarsCount(); }
|
||||
return 0;
|
||||
}
|
||||
|
||||
CAirlineIcaoCode CWebDataServices::getAirlineIcaoCodeForDesignator(const QString &designator) const
|
||||
{
|
||||
if (m_icaoDataReader) { return m_icaoDataReader->getAirlineIcaoCodeForDesignator(designator); }
|
||||
@@ -361,10 +371,10 @@ namespace BlackCore
|
||||
void CWebDataServices::initReaders(CWebReaderFlags::WebReader flags)
|
||||
{
|
||||
// 1. VATSIM bookings
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimBookingReader))
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimBookingReader))
|
||||
{
|
||||
this->m_vatsimBookingReader = new CVatsimBookingReader(this, CGlobalReaderSettings::instance().bookingsUrl());
|
||||
bool c = connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CWebDataServices::ps_receivedBookings);
|
||||
bool c = connect(this->m_vatsimBookingReader, &CVatsimBookingReader::atcBookingsRead, this, &CWebDataServices::ps_receivedBookings);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM booking reader signals");
|
||||
Q_UNUSED(c);
|
||||
this->m_vatsimBookingReader->start(QThread::LowPriority);
|
||||
@@ -372,10 +382,10 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
// 2. VATSIM data file
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimDataReader))
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimDataReader))
|
||||
{
|
||||
this->m_vatsimDataFileReader = new CVatsimDataFileReader(this, CGlobalReaderSettings::instance().vatsimDataFileUrls());
|
||||
bool c = connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CWebDataServices::ps_dataFileRead);
|
||||
bool c = connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataFileRead, this, &CWebDataServices::ps_dataFileRead);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM data reader signals");
|
||||
Q_UNUSED(c);
|
||||
this->m_vatsimDataFileReader->start(QThread::LowPriority);
|
||||
@@ -383,10 +393,10 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
// 3. VATSIM metar data
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlags::VatsimMetarReader))
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlag::VatsimMetarReader))
|
||||
{
|
||||
this->m_vatsimMetarReader = new CVatsimMetarReader(this, CGlobalReaderSettings::instance().urlVatsimMetars());
|
||||
bool c = connect(this->m_vatsimMetarReader, &CVatsimMetarReader::dataRead, this, &CWebDataServices::ps_receivedMetars);
|
||||
bool c = connect(this->m_vatsimMetarReader, &CVatsimMetarReader::metarsRead, this, &CWebDataServices::ps_receivedMetars);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "VATSIM METAR reader signals");
|
||||
Q_UNUSED(c);
|
||||
this->m_vatsimMetarReader->start(QThread::LowPriority);
|
||||
@@ -394,21 +404,21 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
// 4. ICAO data reader
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlags::IcaoDataReader))
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlag::IcaoDataReader))
|
||||
{
|
||||
bool c;
|
||||
this->m_icaoDataReader = new CIcaoDataReader(this, CGlobalReaderSettings::instance().protocolIcaoReader(), CGlobalReaderSettings::instance().serverIcaoReader(), CGlobalReaderSettings::instance().baseUrlIcaoReader());
|
||||
c = connect(this->m_icaoDataReader, &CIcaoDataReader::readData, this, &CWebDataServices::ps_readFromSwiftDb);
|
||||
c = connect(this->m_icaoDataReader, &CIcaoDataReader::dataRead, this, &CWebDataServices::ps_readFromSwiftDb);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "ICAO reader signals");
|
||||
Q_UNUSED(c);
|
||||
this->m_icaoDataReader->start();
|
||||
}
|
||||
|
||||
// 5. Model reader
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlags::ModelReader))
|
||||
if (flags.testFlag(CWebReaderFlags::WebReaderFlag::ModelReader))
|
||||
{
|
||||
this->m_modelDataReader = new CModelDataReader(this, CGlobalReaderSettings::instance().protocolModelReader(), CGlobalReaderSettings::instance().serverModelReader(), CGlobalReaderSettings::instance().baseUrlModelReader());
|
||||
bool c = connect(this->m_modelDataReader, &CModelDataReader::readData, this, &CWebDataServices::ps_readFromSwiftDb);
|
||||
bool c = connect(this->m_modelDataReader, &CModelDataReader::dataRead, this, &CWebDataServices::ps_readFromSwiftDb);
|
||||
Q_ASSERT_X(c, Q_FUNC_INFO, "Model reader signals");
|
||||
Q_UNUSED(c);
|
||||
this->m_modelDataReader->start();
|
||||
@@ -427,25 +437,22 @@ namespace BlackCore
|
||||
void CWebDataServices::ps_receivedBookings(const CAtcStationList &stations)
|
||||
{
|
||||
CLogMessage(this).info("Read %1 ATC bookings from network") << stations.size();
|
||||
emit vatsimBookingsRead(stations.size());
|
||||
}
|
||||
|
||||
void CWebDataServices::ps_receivedMetars(const CMetarSet &metars)
|
||||
{
|
||||
CLogMessage(this).info("Read %1 METARs") << metars.size();
|
||||
emit vatsimDataFileRead(metars.size());
|
||||
}
|
||||
|
||||
void CWebDataServices::ps_dataFileRead(int lines)
|
||||
{
|
||||
CLogMessage(this).info("Read VATSIM data file, %1 lines") << lines;
|
||||
emit vatsimDataFileRead(lines);
|
||||
}
|
||||
|
||||
void CWebDataServices::ps_readFromSwiftDb(CDbFlags::Entity entity, CDbFlags::ReadState state, int number)
|
||||
void CWebDataServices::ps_readFromSwiftDb(CEntityFlags::Entity entity, CEntityFlags::ReadState state, int number)
|
||||
{
|
||||
CLogMessage(this).info("Read data %1 %3 %2") << CDbFlags::flagToString(entity) << number << CDbFlags::flagToString(state);
|
||||
emit readSwiftDbData(entity, state, number);
|
||||
CLogMessage(this).info("Read data %1 %3 %2") << CEntityFlags::flagToString(entity) << number << CEntityFlags::flagToString(state);
|
||||
// emit readSwiftDbData(entity, state, number);
|
||||
}
|
||||
|
||||
void CWebDataServices::readAllInBackground(int delayMs)
|
||||
@@ -462,8 +469,8 @@ namespace BlackCore
|
||||
// only readers requested will be read
|
||||
if (this->m_vatsimBookingReader) {this->m_vatsimBookingReader->readInBackgroundThread(); }
|
||||
if (this->m_vatsimDataFileReader) this->m_vatsimDataFileReader->readInBackgroundThread();
|
||||
if (this->m_icaoDataReader) { this->m_icaoDataReader->readInBackgroundThread(CDbFlags::AllIcaoAndCountries); }
|
||||
if (this->m_modelDataReader) { this->m_modelDataReader->readInBackgroundThread(CDbFlags::DistributorLiveryModel); }
|
||||
if (this->m_icaoDataReader) { this->m_icaoDataReader->readInBackgroundThread(CEntityFlags::AllIcaoAndCountries); }
|
||||
if (this->m_modelDataReader) { this->m_modelDataReader->readInBackgroundThread(CEntityFlags::DistributorLiveryModel); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -73,19 +73,13 @@ namespace BlackCore
|
||||
|
||||
// ------------------------ provider functionality ------------------------------
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::connectVatsimDataSignals
|
||||
//! \copydoc IWebDataReaderProvider::connectDataReadSignal
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual QList<QMetaObject::Connection> connectVatsimDataSignals(
|
||||
virtual QList<QMetaObject::Connection> connectDataReadSignal(
|
||||
QObject *receiver,
|
||||
std::function<void(int)> bookingsRead, std::function<void(int)> dataFileRead, std::function<void(int)> metarsRead) override;
|
||||
std::function<void (BlackMisc::Network::CEntityFlags::Entity, BlackMisc::Network::CEntityFlags::ReadState, int)> dataRead) override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::connectSwiftDatabaseSignals
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual QList<QMetaObject::Connection> connectSwiftDatabaseSignals(
|
||||
QObject *receiver,
|
||||
std::function<void (BlackMisc::Network::CDbFlags::Entity, BlackMisc::Network::CDbFlags::ReadState, int)> dataRead) override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::connectSwiftDatabaseSignals
|
||||
//! \copydoc IWebDataReaderProvider::triggerRead
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead) override;
|
||||
|
||||
@@ -197,6 +191,18 @@ namespace BlackCore
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual BlackMisc::CCountry getCountryForIsoCode(const QString &iso) const override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetars
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual BlackMisc::Weather::CMetarSet getMetars() const override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetarForAirport
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetarForAirport
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual int getMetarsCount() const override;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getUsersForCallsign
|
||||
//! \ingroup webdatareaderprovider
|
||||
virtual BlackMisc::Network::CUserList getUsersForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
@@ -226,17 +232,9 @@ namespace BlackCore
|
||||
void readAllInBackground(int delayMs);
|
||||
|
||||
signals:
|
||||
//! Data file read
|
||||
void vatsimDataFileRead(int lines);
|
||||
|
||||
//! Bookings read
|
||||
void vatsimBookingsRead(int number);
|
||||
|
||||
//! METARs read
|
||||
void vatsimMetarsRead(int number);
|
||||
|
||||
//! Combined read signal
|
||||
void readSwiftDbData(BlackMisc::Network::CEntityFlags::Entity entity, BlackMisc::Network::CEntityFlags::ReadState state, int number);
|
||||
//
|
||||
// Consider to use the connect method of the provider to connect by entity
|
||||
//
|
||||
|
||||
//! Model has been written
|
||||
void modelWritten(const BlackMisc::Simulation::CAircraftModel &model);
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace BlackGui
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
this->ui->filter_AircraftIcao->setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbAircraftIcaoComponent::ps_icaoRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace BlackGui
|
||||
{
|
||||
if (!webDataReaderProvider) { return; }
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbAircraftIcaoSelectorComponent::ps_codesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace BlackGui
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
this->ui->filter_AirlineIcao->setProvider(webDataReaderProvider);
|
||||
webDataReaderProvider->connectSwiftDatabaseSignals(
|
||||
webDataReaderProvider->connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbAirlineIcaoComponent::ps_icaoRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace BlackGui
|
||||
{
|
||||
if (!webDataReaderProvider) { return; }
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbAirlineIcaoSelectorComponent::ps_codesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace BlackGui
|
||||
void CDbCountryComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbCountryComponent::ps_countriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace BlackGui
|
||||
{
|
||||
if (!webDataReaderProvider) { return; }
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
webDataReaderProvider->connectSwiftDatabaseSignals(
|
||||
webDataReaderProvider->connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbCountrySelectorComponent::ps_CountriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace BlackGui
|
||||
void CDbDistributorComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbDistributorComponent::ps_distributorsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace BlackGui
|
||||
void CDbDistributorSelectorComponent::setProvider(Network::IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbDistributorSelectorComponent::ps_distributorsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace BlackGui
|
||||
void CDbLiveryComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbLiveryComponent::ps_liveriesRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace BlackGui
|
||||
void CDbModelComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
webDataReaderProvider->connectSwiftDatabaseSignals(
|
||||
webDataReaderProvider->connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CDbModelComponent::ps_modelsRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace BlackGui
|
||||
void CInfoBarWebReadersStatusComponent::setProvider(IWebDataServicesProvider *webDataReaderProvider)
|
||||
{
|
||||
CWebDataServicesAware::setProvider(webDataReaderProvider);
|
||||
connectSwiftDatabaseSignals(
|
||||
connectDataReadSignal(
|
||||
this,
|
||||
std::bind(&CInfoBarWebReadersStatusComponent::ps_dataRead, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
|
||||
);
|
||||
|
||||
@@ -135,13 +135,13 @@ namespace BlackGui
|
||||
{
|
||||
Q_ASSERT(getIContextNetwork());
|
||||
Q_ASSERT(getIContextSettings());
|
||||
connect(getIContextNetwork(), &IContextNetwork::vatsimDataFileRead, this, &CLoginComponent::ps_onVatsimDataFileLoaded);
|
||||
connect(getIContextNetwork(), &IContextNetwork::webServiceDataRead, this, &CLoginComponent::ps_onWebServiceDataRead);
|
||||
connect(getIContextSettings(), &IContextSettings::changedSettings, this, &CLoginComponent::ps_onSettingsChanged);
|
||||
|
||||
// inital setup, if data already available
|
||||
ps_validateAircraftValues();
|
||||
ps_validateVatsimValues();
|
||||
ps_onVatsimDataFileLoaded();
|
||||
ps_onWebServiceDataRead(CEntityFlags::VatsimDataFile, CEntityFlags::ReadFinished, -1);
|
||||
CServerList otherServers = this->m_trafficNetworkServers.get();
|
||||
|
||||
// add a testserver when no servers can be loaded
|
||||
@@ -266,10 +266,14 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
void CLoginComponent::ps_onVatsimDataFileLoaded()
|
||||
void CLoginComponent::ps_onWebServiceDataRead(int entityI, int stateI, int number)
|
||||
// void CLoginComponent::ps_onWebServiceDataRead(CEntityFlags::Entity entity, CEntityFlags::ReadState, int number)
|
||||
{
|
||||
Q_ASSERT(getIContextNetwork());
|
||||
Q_ASSERT(getIContextSettings());
|
||||
CEntityFlags::EntityFlag entity = static_cast<CEntityFlags::EntityFlag>(entityI);
|
||||
CEntityFlags::ReadState state = static_cast<CEntityFlags::ReadState>(stateI);
|
||||
if (entity != CEntityFlags::VatsimDataFile || state != CEntityFlags::ReadFinished) { return; }
|
||||
Q_UNUSED(number);
|
||||
Q_ASSERT_X(getIContextNetwork(), Q_FUNC_INFO, "Missing context");
|
||||
CServerList vatsimFsdServers = this->getIContextNetwork()->getVatsimFsdServers();
|
||||
if (vatsimFsdServers.isEmpty()) { return; }
|
||||
this->ui->cbp_VatsimServer->setServers(vatsimFsdServers);
|
||||
|
||||
@@ -13,9 +13,10 @@
|
||||
#define BLACKGUI_LOGINCOMPONENT_H
|
||||
|
||||
#include "blackgui/blackguiexport.h"
|
||||
#include "enableforruntime.h"
|
||||
#include "blackgui/components/enableforruntime.h"
|
||||
#include "blackcore/settings/network.h"
|
||||
#include "blackmisc/network/server.h"
|
||||
#include "blackmisc/network/entityflags.h"
|
||||
#include <QFrame>
|
||||
#include <QScopedPointer>
|
||||
|
||||
@@ -25,7 +26,6 @@ namespace BlackGui
|
||||
{
|
||||
namespace Components
|
||||
{
|
||||
|
||||
//! Login component
|
||||
class BLACKGUI_EXPORT CLoginComponent :
|
||||
public QFrame,
|
||||
@@ -66,7 +66,7 @@ namespace BlackGui
|
||||
void ps_toggleNetworkConnection();
|
||||
|
||||
//! VATSIM data file was loaded
|
||||
void ps_onVatsimDataFileLoaded();
|
||||
void ps_onWebServiceDataRead(int entity, int state, int number);
|
||||
|
||||
//! Validate aircaft
|
||||
bool ps_validateAircraftValues();
|
||||
|
||||
@@ -13,6 +13,7 @@ using namespace BlackMisc;
|
||||
using namespace BlackMisc::Network;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::Aviation;
|
||||
using namespace BlackMisc::Weather;
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
@@ -218,6 +219,27 @@ namespace BlackMisc
|
||||
return this->m_webDataReaderProvider->getCountryForName(name);
|
||||
}
|
||||
|
||||
CMetarSet CWebDataServicesAware::getMetars() const
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
if (!hasProvider()) { return CMetarSet(); }
|
||||
return this->m_webDataReaderProvider->getMetars();
|
||||
}
|
||||
|
||||
Weather::CMetar CWebDataServicesAware::getMetarForAirport(const CAirportIcaoCode &icao) const
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
if (!hasProvider()) { return CMetar(); }
|
||||
return this->m_webDataReaderProvider->getMetarForAirport(icao);
|
||||
}
|
||||
|
||||
int CWebDataServicesAware::getMetarCount() const
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
if (!hasProvider()) { return 0; }
|
||||
return this->m_webDataReaderProvider->getMetarsCount();
|
||||
}
|
||||
|
||||
CCountry CWebDataServicesAware::getCountryForIsoCode(const QString &iso) const
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
@@ -257,20 +279,20 @@ namespace BlackMisc
|
||||
this->m_webDataReaderProvider = nullptr;
|
||||
}
|
||||
|
||||
void CWebDataServicesAware::connectSwiftDatabaseSignals(QObject *receiver, std::function<void (CDbFlags::Entity, CDbFlags::ReadState, int)> dataRead)
|
||||
void CWebDataServicesAware::connectDataReadSignal(QObject *receiver, std::function<void (CEntityFlags::Entity, CEntityFlags::ReadState, int)> dataRead)
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
if (!hasProvider()) { return; }
|
||||
if (receiver)
|
||||
{
|
||||
this->m_swiftConnections.append(this->m_webDataReaderProvider->connectSwiftDatabaseSignals(receiver, dataRead));
|
||||
this->m_swiftConnections.append(this->m_webDataReaderProvider->connectDataReadSignal(receiver, dataRead));
|
||||
}
|
||||
}
|
||||
|
||||
CDbFlags::Entity CWebDataServicesAware::triggerRead(CDbFlags::Entity whatToRead)
|
||||
CEntityFlags::Entity CWebDataServicesAware::triggerRead(CEntityFlags::Entity whatToRead)
|
||||
{
|
||||
Q_ASSERT_X(this->m_webDataReaderProvider, Q_FUNC_INFO, "Missing provider");
|
||||
if (!hasProvider()) { return CDbFlags::NoEntity; }
|
||||
if (!hasProvider()) { return CEntityFlags::NoEntity; }
|
||||
return this->m_webDataReaderProvider->triggerRead(whatToRead);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,13 +17,14 @@
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
#include "blackmisc/aviation/liverylist.h"
|
||||
#include "blackmisc/aviation/atcstationlist.h"
|
||||
#include "blackmisc/network/dbflags.h"
|
||||
#include "blackmisc/network/entityflags.h"
|
||||
#include "blackmisc/network/serverlist.h"
|
||||
#include "blackmisc/network/userlist.h"
|
||||
#include "blackmisc/network/voicecapabilities.h"
|
||||
#include "blackmisc/simulation/aircraftmodellist.h"
|
||||
#include "blackmisc/simulation/distributorlist.h"
|
||||
#include "blackmisc/simulation/simulatedaircraft.h"
|
||||
#include "blackmisc/weather/metarset.h"
|
||||
#include "blackmisc/countrylist.h"
|
||||
|
||||
#include <functional>
|
||||
@@ -166,26 +167,31 @@ namespace BlackMisc
|
||||
//! \threadsafe
|
||||
virtual BlackMisc::CCountry getCountryForName(const QString &name) const = 0;
|
||||
|
||||
//! Get METARs
|
||||
//! \threadsafe
|
||||
virtual BlackMisc::Weather::CMetarSet getMetars() const = 0;
|
||||
|
||||
//! Get METAR for airport
|
||||
//! \threadsafe
|
||||
virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const = 0;
|
||||
|
||||
//! Get METARs count
|
||||
//! \threadsafe
|
||||
virtual int getMetarsCount() const = 0;
|
||||
|
||||
//! Write directly to database
|
||||
virtual BlackMisc::CStatusMessageList asyncWriteModel(BlackMisc::Simulation::CAircraftModel &model) const = 0;
|
||||
|
||||
//! Relay signals for VATSIM data
|
||||
//! Relay signals for swift data
|
||||
//! Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly.
|
||||
//! In order to disconnect a list of connections is provided, which have to be disconnected manually.
|
||||
//! \note receiver is required for connection type
|
||||
//! \todo currently still used, will be replaced by abstract connection by entity
|
||||
virtual QList<QMetaObject::Connection> connectVatsimDataSignals(
|
||||
virtual QList<QMetaObject::Connection> connectDataReadSignal(
|
||||
QObject *receiver,
|
||||
std::function<void(int)> bookingsRead, std::function<void(int)> dataFileRead, std::function<void(int)> metarsRead) = 0;
|
||||
|
||||
//! Relay signals for swift data
|
||||
//! \todo currently still used, will be replaced by abstract connection by entity
|
||||
virtual QList<QMetaObject::Connection> connectSwiftDatabaseSignals(
|
||||
QObject *receiver,
|
||||
std::function<void(BlackMisc::Network::CDbFlags::Entity, BlackMisc::Network::CDbFlags::ReadState, int)> dataRead) = 0;
|
||||
std::function<void(BlackMisc::Network::CEntityFlags::Entity, BlackMisc::Network::CEntityFlags::ReadState, int)> dataRead) = 0;
|
||||
|
||||
//! Trigger read of new data
|
||||
virtual BlackMisc::Network::CDbFlags::Entity triggerRead(BlackMisc::Network::CDbFlags::Entity whatToRead) = 0;
|
||||
virtual BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead) = 0;
|
||||
|
||||
//! Can connect to swift DB?
|
||||
virtual bool canConnectSwiftDb() const = 0;
|
||||
@@ -285,6 +291,15 @@ namespace BlackMisc
|
||||
//! \copydoc IWebDataReaderProvider::getCountryForName
|
||||
BlackMisc::CCountry getCountryForName(const QString &name) const;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetars
|
||||
BlackMisc::Weather::CMetarSet getMetars() const;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetarForAirport
|
||||
BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &icao) const;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::getMetarCount
|
||||
int getMetarCount() const;
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::updateWithWebData
|
||||
void updateWithVatsimDataFileData(BlackMisc::Simulation::CSimulatedAircraft &aircraftToBeUdpated) const;
|
||||
|
||||
@@ -300,13 +315,13 @@ namespace BlackMisc
|
||||
//! Called when provider should no longer be used
|
||||
void gracefulShutdown();
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::connectSwiftDatabaseSignals
|
||||
void connectSwiftDatabaseSignals(
|
||||
//! \copydoc IWebDataReaderProvider::connectDataReadSignal
|
||||
void connectDataReadSignal(
|
||||
QObject *receiver,
|
||||
std::function<void(BlackMisc::Network::CDbFlags::Entity, BlackMisc::Network::CDbFlags::ReadState, int)> dataRead);
|
||||
std::function<void(BlackMisc::Network::CEntityFlags::Entity, BlackMisc::Network::CEntityFlags::ReadState, int)> dataRead);
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::triggerRead
|
||||
BlackMisc::Network::CDbFlags::Entity triggerRead(BlackMisc::Network::CDbFlags::Entity whatToRead);
|
||||
BlackMisc::Network::CEntityFlags::Entity triggerRead(BlackMisc::Network::CEntityFlags::Entity whatToRead);
|
||||
|
||||
//! \copydoc IWebDataReaderProvider::canConnectSwiftDb
|
||||
bool canConnectSwiftDb() const;
|
||||
|
||||
Reference in New Issue
Block a user