Ref T171, made remote aircraft provider and web service "protected slots" -> "protected"

* Unlike in other cases, the remote aircraft provider slots are also very frequently called. So besides "style", it might be also useful here to avoid the extra MOC layers.
* Also renamed 2 web service signals and made web service connections Qt::QueuedConnection
This commit is contained in:
Klaus Basan
2017-10-09 18:20:08 +02:00
parent 3c28f8a2de
commit b6333e69d8
12 changed files with 82 additions and 79 deletions

View File

@@ -59,23 +59,23 @@ namespace BlackCore
m_remoteAircraftProviderConnections.append( m_remoteAircraftProviderConnections.append(
m_remoteAircraftProvider->connectRemoteAircraftProviderSignals( m_remoteAircraftProvider->connectRemoteAircraftProviderSignals(
this, // receiver must match object in bind this, // receiver must match object in bind
std::bind(&CSimulatorCommon::ps_remoteProviderAddAircraftSituation, this, std::placeholders::_1), std::bind(&CSimulatorCommon::onRemoteProviderAddedAircraftSituation, this, std::placeholders::_1),
std::bind(&CSimulatorCommon::ps_remoteProviderAddAircraftParts, this, std::placeholders::_1, std::placeholders::_2), std::bind(&CSimulatorCommon::onRemoteProviderAddedAircraftParts, this, std::placeholders::_1, std::placeholders::_2),
std::bind(&CSimulatorCommon::ps_remoteProviderRemovedAircraft, this, std::placeholders::_1), std::bind(&CSimulatorCommon::onRemoteProviderRemovedAircraft, this, std::placeholders::_1),
std::bind(&CSimulatorCommon::ps_recalculateRenderedAircraft, this, std::placeholders::_1)) std::bind(&CSimulatorCommon::onRecalculatedRenderedAircraft, this, std::placeholders::_1))
); );
// timer // timer
connect(&m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::ps_oneSecondTimer); connect(&m_oneSecondTimer, &QTimer::timeout, this, &CSimulatorCommon::oneSecondTimerTimeout);
this->m_oneSecondTimer.setObjectName(this->objectName().append(":m_oneSecondTimer")); this->m_oneSecondTimer.setObjectName(this->objectName().append(":m_oneSecondTimer"));
this->m_oneSecondTimer.start(1000); this->m_oneSecondTimer.start(1000);
// swift data // swift data
if (sApp && sApp->getWebDataServices()) if (sApp && sApp->hasWebDataServices())
{ {
connect(sApp->getWebDataServices(), &CWebDataServices::allSwiftDbDataRead, this, &CSimulatorCommon::ps_allSwiftDataRead); connect(sApp->getWebDataServices(), &CWebDataServices::allSwiftDbDataRead, this, &CSimulatorCommon::onSwiftDbAllDataRead, Qt::QueuedConnection);
connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbAirportsRead, this, &CSimulatorCommon::ps_airportsRead); connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbAirportsRead, this, &CSimulatorCommon::onSwiftDbAirportsRead, Qt::QueuedConnection);
connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntities, this, &CSimulatorCommon::ps_modelMatchingEntities); connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntitiesRead, this, &CSimulatorCommon::onSwiftDbModelMatchingEntitiesRead, Qt::QueuedConnection);
} }
// info // info
@@ -243,7 +243,7 @@ namespace BlackCore
else else
{ {
// we wait for the data // we wait for the data
connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntities, this, [ = ] connect(sApp->getWebDataServices(), &CWebDataServices::swiftDbModelMatchingEntitiesRead, this, [ = ]
{ {
this->reverseLookupAndUpdateOwnAircraftModel(model); this->reverseLookupAndUpdateOwnAircraftModel(model);
}); });
@@ -286,17 +286,17 @@ namespace BlackCore
return reverseModel; return reverseModel;
} }
void CSimulatorCommon::ps_allSwiftDataRead() void CSimulatorCommon::onSwiftDbAllDataRead()
{ {
// void, can be overridden in specialized drivers // void, can be overridden in specialized drivers
} }
void CSimulatorCommon::ps_modelMatchingEntities() void CSimulatorCommon::onSwiftDbModelMatchingEntitiesRead()
{ {
// void, can be overridden in specialized drivers // void, can be overridden in specialized drivers
} }
void CSimulatorCommon::ps_airportsRead() void CSimulatorCommon::onSwiftDbAirportsRead()
{ {
// void, can be overridden in specialized drivers // void, can be overridden in specialized drivers
} }
@@ -461,12 +461,12 @@ namespace BlackCore
CSimpleCommandParser::registerCommand({".drv spline|linear <callsign>", "set spline/linear interpolator for one/all callsign(s)"}); CSimpleCommandParser::registerCommand({".drv spline|linear <callsign>", "set spline/linear interpolator for one/all callsign(s)"});
} }
void CSimulatorCommon::ps_oneSecondTimer() void CSimulatorCommon::oneSecondTimerTimeout()
{ {
this->blinkHighlightedAircraft(); this->blinkHighlightedAircraft();
} }
void CSimulatorCommon::ps_recalculateRenderedAircraft(const CAirspaceAircraftSnapshot &snapshot) void CSimulatorCommon::onRecalculatedRenderedAircraft(const CAirspaceAircraftSnapshot &snapshot)
{ {
if (!snapshot.isValidSnapshot()) { return;} if (!snapshot.isValidSnapshot()) { return;}
@@ -516,18 +516,18 @@ namespace BlackCore
} }
} }
void CSimulatorCommon::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation) void CSimulatorCommon::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation)
{ {
Q_UNUSED(situation); Q_UNUSED(situation);
} }
void CSimulatorCommon::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) void CSimulatorCommon::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
{ {
Q_UNUSED(callsign); Q_UNUSED(callsign);
Q_UNUSED(parts); Q_UNUSED(parts);
} }
void CSimulatorCommon::ps_remoteProviderRemovedAircraft(const CCallsign &callsign) void CSimulatorCommon::onRemoteProviderRemovedAircraft(const CCallsign &callsign)
{ {
Q_UNUSED(callsign); Q_UNUSED(callsign);
} }

View File

@@ -106,34 +106,6 @@ namespace BlackCore
// --------- ISimulator implementations ------------ // --------- ISimulator implementations ------------
protected slots:
//! \name Connected with remote aircraft provider signals
//! @{
//! Slow timer used to highlight aircraft, can be used for other things too
virtual void ps_oneSecondTimer();
//! Recalculate the rendered aircraft, this happens when restrictions are applied (max. aircraft, range)
virtual void ps_recalculateRenderedAircraft(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &snapshot);
//! Provider added situation
virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
//! Provider added parts
virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts);
//! Provider removed aircraft
virtual void ps_remoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign);
//! @}
//! All swift data read from DB
virtual void ps_allSwiftDataRead();
//! DB models read
virtual void ps_modelMatchingEntities();
//! DB Airports read
virtual void ps_airportsRead();
protected: protected:
//! Constructor //! Constructor
CSimulatorCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info, CSimulatorCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
@@ -148,6 +120,28 @@ namespace BlackCore
virtual bool logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; virtual bool logicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
//! @} //! @}
//! \name When swift DB data are read
//! @{
virtual void onSwiftDbAllDataRead();
virtual void onSwiftDbModelMatchingEntitiesRead();
virtual void onSwiftDbAirportsRead();
//! @}
//! \name Connected with remote aircraft provider signals
//! @{
//! Recalculate the rendered aircraft, this happens when restrictions are applied (max. aircraft, range)
virtual void onRecalculatedRenderedAircraft(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &snapshot);
//! Provider added situation
virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
//! Provider added parts
virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts);
//! Provider removed aircraft
virtual void onRemoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign);
//! @}
//! New plugin info //! New plugin info
//! \remark normally only used by //! \remark normally only used by
void setNewPluginInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &info, const BlackMisc::Simulation::CAircraftModel &defaultModel); void setNewPluginInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &info, const BlackMisc::Simulation::CAircraftModel &defaultModel);
@@ -197,12 +191,15 @@ namespace BlackCore
//! Show log messages? //! Show log messages?
bool showDebugLogMessage() const; bool showDebugLogMessage() const;
//! Slow timer used to highlight aircraft, can be used for other things too
virtual void oneSecondTimerTimeout();
bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold) bool m_pausedSimFreezesInterpolation = false; //!< paused simulator will also pause interpolation (so AI aircraft will hold)
bool m_autoCalcAirportDistance = true; //!< automatically calculate airport distance and bearing bool m_autoCalcAirportDistance = true; //!< automatically calculate airport distance and bearing
BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< default model
int m_statsUpdateAircraftCountMs = 0; //!< statistics update count int m_statsUpdateAircraftCountMs = 0; //!< statistics update count
qint64 m_statsUpdateAircraftTimeTotalMs = 0; //!< statistics update time qint64 m_statsUpdateAircraftTimeTotalMs = 0; //!< statistics update time
qint64 m_statsUpdateAircraftTimeAvgMs = 0; //!< statistics update time qint64 m_statsUpdateAircraftTimeAvgMs = 0; //!< statistics update time
BlackMisc::Simulation::CAircraftModel m_defaultModel; //!< default model
BlackMisc::Simulation::CSimulatorInternals m_simulatorInternals; //!< setup object BlackMisc::Simulation::CSimulatorInternals m_simulatorInternals; //!< setup object
BlackMisc::Simulation::CInterpolationLogger m_interpolationLogger; //!< log interpolation BlackMisc::Simulation::CInterpolationLogger m_interpolationLogger; //!< log interpolation
mutable QReadWriteLock m_interpolationRenderingSetupMutex; //!< mutex protecting setup object mutable QReadWriteLock m_interpolationRenderingSetupMutex; //!< mutex protecting setup object

View File

@@ -1187,11 +1187,11 @@ namespace BlackCore
if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::AllIcaoEntities) && signalEntitiesAlreadyRead(CEntityFlags::AllIcaoEntities)) if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::AllIcaoEntities) && signalEntitiesAlreadyRead(CEntityFlags::AllIcaoEntities))
{ {
emit swiftDbAllIcaoEntities(); emit swiftDbAllIcaoEntitiesRead();
} }
if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::ModelMatchingEntities) && signalEntitiesAlreadyRead(CEntityFlags::ModelMatchingEntities)) if (m_swiftDbEntitiesRead.testFlag(CEntityFlags::ModelMatchingEntities) && signalEntitiesAlreadyRead(CEntityFlags::ModelMatchingEntities))
{ {
emit swiftDbModelMatchingEntities(); emit swiftDbModelMatchingEntitiesRead();
} }
} }
} }

View File

@@ -460,10 +460,10 @@ namespace BlackCore
void swiftDbAirportsRead(); void swiftDbAirportsRead();
//! All ICAO entities //! All ICAO entities
void swiftDbAllIcaoEntities(); void swiftDbAllIcaoEntitiesRead();
//! All entities needed for model matching //! All entities needed for model matching
void swiftDbModelMatchingEntities(); void swiftDbModelMatchingEntitiesRead();
//! @} //! @}
public slots: public slots:

View File

@@ -417,14 +417,14 @@ namespace BlackSimPlugin
m_fsuipc->write(weatherGrid); m_fsuipc->write(weatherGrid);
} }
void CSimulatorFs9::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation) void CSimulatorFs9::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation)
{ {
const auto it = m_hashFs9Clients.find(situation.getCallsign()); const auto it = m_hashFs9Clients.find(situation.getCallsign());
if (it == m_hashFs9Clients.end()) { return; } if (it == m_hashFs9Clients.end()) { return; }
QTimer::singleShot(0, it->data(), [client = *it, situation] { client->getInterpolator()->addAircraftSituation(situation); }); QTimer::singleShot(0, it->data(), [client = *it, situation] { client->getInterpolator()->addAircraftSituation(situation); });
} }
void CSimulatorFs9::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) void CSimulatorFs9::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
{ {
const auto it = m_hashFs9Clients.find(callsign); const auto it = m_hashFs9Clients.find(callsign);
if (it == m_hashFs9Clients.end()) { return; } if (it == m_hashFs9Clients.end()) { return; }

View File

@@ -78,8 +78,12 @@ namespace BlackSimPlugin
//! \name Base class overrides //! \name Base class overrides
//! @{ //! @{
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override; virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; //! @}
virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
//! \name Remote aircraft provider overrides
//! @{
virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
//! @} //! @}
private slots: private slots:

View File

@@ -147,14 +147,14 @@ namespace BlackSimPlugin
return true; return true;
} }
void CSimulatorFsCommon::ps_airportsRead() void CSimulatorFsCommon::onSwiftDbAirportsRead()
{ {
const CAirportList webServiceAirports = this->getWebServiceAirports(); const CAirportList webServiceAirports = this->getWebServiceAirports();
if (!webServiceAirports.isEmpty()) if (!webServiceAirports.isEmpty())
{ {
m_airportsInRangeFromSimulator.updateMissingParts(webServiceAirports); m_airportsInRangeFromSimulator.updateMissingParts(webServiceAirports);
} }
CSimulatorCommon::ps_airportsRead(); CSimulatorCommon::onSwiftDbAirportsRead();
} }
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -48,10 +48,6 @@ namespace BlackSimPlugin
virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override; virtual bool changeRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft) override;
// ---------------------- ISimulator ------------------ // ---------------------- ISimulator ------------------
protected slots:
//! \copydoc BlackCore::CSimulatorCommon::ps_allSwiftDataRead
virtual void ps_airportsRead() override;
protected: protected:
//! Constructor //! Constructor
CSimulatorFsCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info, CSimulatorFsCommon(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
@@ -63,6 +59,11 @@ namespace BlackSimPlugin
//! Init the internal objects //! Init the internal objects
virtual void initSimulatorInternals(); virtual void initSimulatorInternals();
//! \name When swift DB data are read
//! @{
virtual void onSwiftDbAirportsRead() override;
//! @}
//! \addtogroup swiftdotcommands //! \addtogroup swiftdotcommands
//! @{ //! @{
//! <pre> //! <pre>

View File

@@ -1434,13 +1434,13 @@ namespace BlackSimPlugin
CSimulatorFsCommon::clearAllAircraft(); CSimulatorFsCommon::clearAllAircraft();
} }
void CSimulatorFsxCommon::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation) void CSimulatorFsxCommon::onRemoteProviderAddedAircraftSituation(const CAircraftSituation &situation)
{ {
if (!m_simConnectObjects.contains(situation.getCallsign())) { return; } if (!m_simConnectObjects.contains(situation.getCallsign())) { return; }
m_simConnectObjects[situation.getCallsign()].addAircraftSituation(situation); m_simConnectObjects[situation.getCallsign()].addAircraftSituation(situation);
} }
void CSimulatorFsxCommon::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts) void CSimulatorFsxCommon::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
{ {
if (!m_simConnectObjects.contains(callsign)) { return; } if (!m_simConnectObjects.contains(callsign)) { return; }
m_simConnectObjects[callsign].addAircraftParts(parts); m_simConnectObjects[callsign].addAircraftParts(parts);

View File

@@ -135,8 +135,12 @@ namespace BlackSimPlugin
virtual void clearAllAircraft() override; virtual void clearAllAircraft() override;
virtual void initSimulatorInternals() override; virtual void initSimulatorInternals() override;
virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override; virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override;
virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override; //! @}
virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
//! \name Remote aircraft provider overrides
//! @{
virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
//! @} //! @}
//! Timer event (our SimConnect event loop), runs dispatch //! Timer event (our SimConnect event loop), runs dispatch

View File

@@ -526,7 +526,7 @@ namespace BlackSimPlugin
return true; return true;
} }
void CSimulatorXPlane::ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) void CSimulatorXPlane::onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
{ {
if (!isConnected()) { return; } //! \fixme why is this method called when not connected? if (!isConnected()) { return; } //! \fixme why is this method called when not connected?
using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::PhysicalQuantities;
@@ -567,11 +567,11 @@ namespace BlackSimPlugin
{ {
parts.setLights({ true, false, false, true, true, true, true, true }); parts.setLights({ true, false, false, true, true, true, true, true });
} }
ps_remoteProviderAddAircraftParts(situation.getCallsign(), parts); onRemoteProviderAddedAircraftParts(situation.getCallsign(), parts);
} }
} }
void CSimulatorXPlane::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) void CSimulatorXPlane::onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts)
{ {
if (!isConnected()) { return; } //! \fixme why is this method called when not connected? if (!isConnected()) { return; } //! \fixme why is this method called when not connected?
m_traffic->addPlaneSurfaces(callsign.asString(), parts.isGearDown() ? 1 : 0, m_traffic->addPlaneSurfaces(callsign.asString(), parts.isGearDown() ? 1 : 0,
@@ -582,7 +582,7 @@ namespace BlackSimPlugin
m_traffic->setPlaneTransponder(callsign.asString(), 2000, true, false); m_traffic->setPlaneTransponder(callsign.asString(), 2000, true, false);
} }
void CSimulatorXPlane::ps_remoteProviderRemovedAircraft(const CCallsign &callsign) void CSimulatorXPlane::onRemoteProviderRemovedAircraft(const CCallsign &callsign)
{ {
Q_UNUSED(callsign); Q_UNUSED(callsign);
//! \todo call removeRemoteAircraft or just let removeRemoteAircraft handle it? //! \todo call removeRemoteAircraft or just let removeRemoteAircraft handle it?

View File

@@ -106,17 +106,14 @@ namespace BlackSimPlugin
//! Creates an appropriate dbus connection from the string describing it //! Creates an appropriate dbus connection from the string describing it
static QDBusConnection connectionFromString(const QString &str); static QDBusConnection connectionFromString(const QString &str);
protected slots:
//! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderAddAircraftSituation
virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
//! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderAddAircraftParts
virtual void ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
//! \copydoc BlackCore::CSimulatorCommon::ps_remoteProviderRemovedAircraft
virtual void ps_remoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
protected: protected:
//! \name Remote aircraft provider overrides
//! @{
virtual void onRemoteProviderAddedAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
virtual void onRemoteProviderAddedAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) override;
virtual void onRemoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
//! @}
//! \copydoc BlackCore::ISimulator::isConnected //! \copydoc BlackCore::ISimulator::isConnected
virtual bool isConnected() const override; virtual bool isConnected() const override;