Ref T312, added check listener function in contexts

This commit is contained in:
Klaus Basan
2018-08-27 16:41:19 +02:00
parent d879aa6012
commit 0b0a7783a0
6 changed files with 30 additions and 8 deletions

View File

@@ -135,6 +135,9 @@ namespace BlackCore
//! Return list of available simulator plugins
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const = 0;
//! Check all listeners enabled if simulator is connected
virtual int checkListeners() = 0;
//! Load and start specific simulator plugin
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) = 0;

View File

@@ -30,21 +30,21 @@ namespace BlackCore
CContextSimulatorEmpty(CCoreFacade *runtime) : IContextSimulator(CCoreFacadeConfig::NotUsed, runtime) {}
public slots:
//! \copydoc IContextSimulator::getSimulatorPluginInfo()
//! \copydoc IContextSimulator::getSimulatorPluginInfo
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Simulation::CSimulatorPluginInfo();
}
//! \copydoc IContextSimulator::getAvailableSimulatorPlugins()
//! \copydoc IContextSimulator::getAvailableSimulatorPlugins
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Simulation::CSimulatorPluginInfoList();
}
//! \copydoc IContextSimulator::startSimulatorPlugin()
//! \copydoc IContextSimulator::startSimulatorPlugin
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override
{
Q_UNUSED(simulatorInfo);
@@ -52,7 +52,13 @@ namespace BlackCore
return false;
}
//! \copydoc IContextSimulator::getSimulatorStatus()
//! \copydoc IContextSimulator::checkListeners
virtual int checkListeners() override
{
return 0;
}
//! \copydoc IContextSimulator::getSimulatorStatus
virtual int getSimulatorStatus() const override
{
logEmptyContextWarning(Q_FUNC_INFO);

View File

@@ -125,7 +125,14 @@ namespace BlackCore
ISimulatorListener *listener = m_plugins->getListener(simulatorInfo.getIdentifier());
Q_ASSERT(listener);
QMetaObject::invokeMethod(listener, "stop");
QMetaObject::invokeMethod(listener, "stop", Qt::QueuedConnection);
}
int CContextSimulator::checkListeners()
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
if (!m_plugins) { return 0; }
return m_plugins->checkAvailableListeners();
}
int CContextSimulator::getSimulatorStatus() const
@@ -461,7 +468,7 @@ namespace BlackCore
{
Q_ASSERT_X(!listener->parent(), Q_FUNC_INFO, "Objects with parent cannot be moved to thread");
const bool c = connect(listener, &ISimulatorListener::simulatorStarted, this, &CContextSimulator::onSimulatorStarted);
const bool c = connect(listener, &ISimulatorListener::simulatorStarted, this, &CContextSimulator::onSimulatorStarted, Qt::QueuedConnection);
if (!c)
{
CLogMessage(this).error("Unable to use '%1'") << simulatorInfo.toQString();
@@ -487,7 +494,7 @@ namespace BlackCore
Q_ASSERT(!p.isUnspecified());
if (p.isValid())
{
listenForSimulator(p);
this->listenForSimulator(p);
}
}
}

View File

@@ -75,6 +75,7 @@ namespace BlackCore
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override;
virtual int getSimulatorStatus() const override;
virtual BlackMisc::Simulation::CSimulatorInternals getSimulatorInternals() const override;
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;

View File

@@ -211,6 +211,11 @@ namespace BlackCore
m_dBusInterface->callDBus(QLatin1String("stopSimulatorPlugin"), simulatorInfo);
}
int CContextSimulatorProxy::checkListeners()
{
return m_dBusInterface->callDBusRet<int>(QLatin1String("checkListeners"));
}
CPixmap CContextSimulatorProxy::iconForModel(const QString &modelString) const
{
return m_dBusInterface->callDBusRet<CPixmap>(QLatin1String("iconForModel"), modelString);

View File

@@ -20,7 +20,6 @@
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/simulatorplugininfolist.h"
#include "blackmisc/simulation/simulatorinternals.h"
@@ -61,6 +60,7 @@ namespace BlackCore
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override;
virtual int getSimulatorStatus() const override;
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
virtual BlackMisc::Simulation::CAircraftModelList getModelSet() const override;