diff --git a/src/blackcore/context_runtime.cpp b/src/blackcore/context_runtime.cpp index 10b0f046b..85e5fe572 100644 --- a/src/blackcore/context_runtime.cpp +++ b/src/blackcore/context_runtime.cpp @@ -398,6 +398,20 @@ namespace BlackCore m_init = true; } + bool CRuntime::hasRemoteApplicationContext() const + { + Q_ASSERT(this->m_contextApplication); + return !this->m_contextApplication->usingLocalObjects(); + } + + bool CRuntime::canPingApplicationContext() const + { + Q_ASSERT(this->m_contextApplication); + if (this->m_contextApplication->usingLocalObjects()) return true; + qint64 token = QDateTime::currentMSecsSinceEpoch(); + return (token == this->m_contextApplication->ping(token)); + } + void CRuntime::initDBusServer(const QString &dBusAddress) { if (this->m_dbusServer) return; diff --git a/src/blackcore/context_runtime.h b/src/blackcore/context_runtime.h index be424a2a1..531c7fdce 100644 --- a/src/blackcore/context_runtime.h +++ b/src/blackcore/context_runtime.h @@ -187,6 +187,11 @@ namespace BlackCore //! Init void init(const CRuntimeConfig &config); + //! Remote application context, indicates distributed environment + bool hasRemoteApplicationContext() const; + + //! Is application context available? + bool canPingApplicationContext() const; private: bool m_init; /*!< flag */ diff --git a/src/blackgui/runtimebasedcomponent.h b/src/blackgui/runtimebasedcomponent.h index d8456a3fb..57de0ba1e 100644 --- a/src/blackgui/runtimebasedcomponent.h +++ b/src/blackgui/runtimebasedcomponent.h @@ -88,6 +88,12 @@ namespace BlackGui //! \remarks use this methods to hook up signal/slots with runtime virtual void runtimeHasBeenSet() {} + //! \copydoc CRuntime::hasRemoteApplicationContext + bool hasRemoteApplicationContext() const { return this->m_runtime->hasRemoteApplicationContext(); } + + //! \copydoc CRuntime::canPingApplicationContext + bool canPingApplicationContext() const { return this->m_runtime->canPingApplicationContext(); } + private: BlackCore::CRuntime *m_runtime; bool m_runtimeOwner; diff --git a/src/blackmisc/avaircraft.cpp b/src/blackmisc/avaircraft.cpp index 61a0a6a4a..8c2a02e01 100644 --- a/src/blackmisc/avaircraft.cpp +++ b/src/blackmisc/avaircraft.cpp @@ -55,6 +55,14 @@ namespace BlackMisc return this->m_distanceToPlane; } + /* + * Same COM system data + */ + bool CAircraft::hasSameComData(const CComSystem &com1, const CComSystem &com2, const CTransponder &transponder) + { + return this->getCom1System() == com1 && this->getCom2System() == com2 && this->getTransponder() == transponder; + } + /* * Valid for login */ diff --git a/src/blackmisc/avaircraft.h b/src/blackmisc/avaircraft.h index c73e869cb..5562eb4f1 100644 --- a/src/blackmisc/avaircraft.h +++ b/src/blackmisc/avaircraft.h @@ -138,6 +138,9 @@ namespace BlackMisc //! \brief Set COM2 system void setCom2System(const CComSystem &comSystem) { this->m_com2system = comSystem; } + //! Identical COM system? + bool hasSameComData(const CComSystem &com1, const CComSystem &com2, const CTransponder &transponder); + //! \brief Is any (COM1/2) active frequency within 8.3383kHz channel? bool isActiveFrequencyWithin8_33kHzChannel(const BlackMisc::PhysicalQuantities::CFrequency &comFrequency) const {