From e0b06e1555e9b315ebb1fcd8d99018efb777b05f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 22 May 2014 12:15:01 +0200 Subject: [PATCH] refs #250, helper methods * in aircraft class to compare COM * in context / runtime component to check vitality of core --- src/blackcore/context_runtime.cpp | 14 ++++++++++++++ src/blackcore/context_runtime.h | 5 +++++ src/blackgui/runtimebasedcomponent.h | 6 ++++++ src/blackmisc/avaircraft.cpp | 8 ++++++++ src/blackmisc/avaircraft.h | 3 +++ 5 files changed, 36 insertions(+) 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 {