From 821e7e73c93bffc674e8696fc547c34c94bf94df Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 5 Jul 2019 01:48:51 +0200 Subject: [PATCH] Ref T698, added remote aircraft context to network class --- samples/cliclient/client.cpp | 8 ++++++- src/blackcore/context/contextnetworkimpl.cpp | 6 ++++- src/blackcore/network.cpp | 23 +++++++++++++++++++ src/blackcore/network.h | 17 ++++++++------ src/blackcore/vatsim/networkvatlib.cpp | 8 ++++--- src/blackcore/vatsim/networkvatlib.h | 9 ++++---- .../remoteaircraftproviderdummy.cpp | 6 +++++ .../simulation/remoteaircraftproviderdummy.h | 3 +++ .../vatsim/testnetwork/testnetwork.cpp | 8 ++++++- 9 files changed, 71 insertions(+), 17 deletions(-) diff --git a/samples/cliclient/client.cpp b/samples/cliclient/client.cpp index 653d7e75a..fff09b9ad 100644 --- a/samples/cliclient/client.cpp +++ b/samples/cliclient/client.cpp @@ -28,6 +28,7 @@ #include "blackmisc/pq/speed.h" #include "blackmisc/pq/units.h" #include "blackmisc/simulation/ownaircraftproviderdummy.h" +#include "blackmisc/simulation/remoteaircraftproviderdummy.h" #include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/stringutils.h" @@ -55,7 +56,12 @@ namespace BlackSample : QObject(parent), COwnAircraftAware(COwnAircraftProviderDummy::instance()), CIdentifiable("samples:cmdClient"), - m_net(new CNetworkVatlib(CClientProviderDummy::instance(), COwnAircraftProviderDummy::instance(), this)) + m_net( + new CNetworkVatlib( + CClientProviderDummy::instance(), + COwnAircraftProviderDummy::instance(), + CRemoteAircraftProviderDummy::instance(), + this)) { connect(m_net, &INetwork::atcPositionUpdate, this, &Client::atcPositionUpdate); connect(m_net, &INetwork::atcDisconnected, this, &Client::atcDisconnected); diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index c39408f69..27aaee877 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -67,7 +67,11 @@ namespace BlackCore CContextNetwork::registerHelp(); // 1. Init by "network driver" - m_network = new CNetworkVatlib(nullptr, this->getRuntime()->getCContextOwnAircraft(), this); + m_network = new CNetworkVatlib( + this, + this->getRuntime()->getCContextOwnAircraft(), + this, + this); connect(m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::onFsdConnectionStatusChanged); connect(m_network, &INetwork::kicked, this, &CContextNetwork::kicked); connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::textMessagesReceived); diff --git a/src/blackcore/network.cpp b/src/blackcore/network.cpp index 0b7aa3da8..6f833411e 100644 --- a/src/blackcore/network.cpp +++ b/src/blackcore/network.cpp @@ -7,13 +7,31 @@ */ #include "network.h" +#include "blackmisc/logmessage.h" #include "blackmisc/range.h" +#include "blackconfig/buildconfig.h" + #include +using namespace BlackConfig; using namespace BlackMisc; +using namespace BlackMisc::Network; +using namespace BlackMisc::Simulation; namespace BlackCore { + INetwork::INetwork(IClientProvider *clientProvider, IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) : + QObject(parent), + CClientAware(clientProvider), + COwnAircraftAware(ownAircraftProvider), + CRemoteAircraftAware(remoteAircraftProvider) + { + if (CBuildConfig::isLocalDeveloperDebugBuild()) + { + CLogMessage("Enabled network statistics"); + m_statistics = true; + } + } int INetwork::increaseStatisticsValue(const QString &identifier, const QString &appendix) { if (identifier.isEmpty() || !m_statistics) { return -1; } @@ -22,6 +40,11 @@ namespace BlackCore return v; } + int INetwork::increaseStatisticsValue(const QString &identifier, int value) + { + return this->increaseStatisticsValue(identifier, QString::number(value)); + } + QString INetwork::getNetworkStatisticsAsText(bool reset, const QString &separator) { QMap transformed; diff --git a/src/blackcore/network.h b/src/blackcore/network.h index 1495b593c..afcded0ec 100644 --- a/src/blackcore/network.h +++ b/src/blackcore/network.h @@ -13,6 +13,7 @@ #include "blackcoreexport.h" #include "blackmisc/simulation/ownaircraftprovider.h" +#include "blackmisc/simulation/remoteaircraftprovider.h" #include "blackmisc/simulation/simulationenvironmentprovider.h" #include "blackmisc/simulation/simulatorplugininfo.h" #include "blackmisc/simulation/simulatedaircraft.h" @@ -62,7 +63,9 @@ namespace BlackCore public BlackMisc::Network::IEcosystemProvider, // provide info about used ecosystem public BlackMisc::Network::CClientAware, // network can set client information public BlackMisc::Simulation::COwnAircraftAware, // network vatlib consumes own aircraft data and sets ICAO/callsign data + public BlackMisc::Simulation::CRemoteAircraftAware, // check if we really need to process network packets (e.g. parts) public BlackMisc::Simulation::CSimulationEnvironmentAware // allows to consume ground elevations + { Q_OBJECT Q_INTERFACES(BlackMisc::Network::IEcosystemProvider) @@ -70,12 +73,10 @@ namespace BlackCore protected: //! Constructor INetwork( - BlackMisc::Network::IClientProvider *clientProvider, - BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, - QObject *parent = nullptr) : - QObject(parent), - BlackMisc::Network::CClientAware(clientProvider), - BlackMisc::Simulation::COwnAircraftAware(ownAircraftProvider) {} + BlackMisc::Network::IClientProvider *clientProvider, + BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, + BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, + QObject *parent = nullptr); public: //! Destructor @@ -110,8 +111,10 @@ namespace BlackCore bool isStatisticsEnabled() const { return m_statistics; } //! @} - //! Increase the statistics value for given identifier + //! Increase the statistics value for given identifier @{ int increaseStatisticsValue(const QString &identifier, const QString &appendix = {}); + int increaseStatisticsValue(const QString &identifier, int value); + //! @} //! Clear the statistics void clearStatistics() { m_callStatistics.clear(); } diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index 9705fcc1a..07b9fd467 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -83,9 +83,11 @@ namespace BlackCore return cats; } - CNetworkVatlib::CNetworkVatlib(IClientProvider *clientProvider, - IOwnAircraftProvider *ownAircraftProvider, QObject *parent) - : INetwork(clientProvider, ownAircraftProvider, parent), + CNetworkVatlib::CNetworkVatlib(IClientProvider *clientProvider, + IOwnAircraftProvider *ownAircraftProvider, + IRemoteAircraftProvider *remoteAircraftProvider, + QObject *parent) + : INetwork(clientProvider, ownAircraftProvider, remoteAircraftProvider, parent), m_loginMode(LoginNormal), m_status(vatStatusDisconnected), m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1) diff --git a/src/blackcore/vatsim/networkvatlib.h b/src/blackcore/vatsim/networkvatlib.h index 891228551..9cb6df426 100644 --- a/src/blackcore/vatsim/networkvatlib.h +++ b/src/blackcore/vatsim/networkvatlib.h @@ -64,10 +64,10 @@ namespace BlackCore static const BlackMisc::CLogCategoryList &getLogCategories(); //! Constructor - CNetworkVatlib( - BlackMisc::Network::IClientProvider *clientProvider, - BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, - QObject *parent = nullptr); + CNetworkVatlib(BlackMisc::Network::IClientProvider *clientProvider, + BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, + BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider, + QObject *parent); //! Destructor virtual ~CNetworkVatlib() override; @@ -313,4 +313,5 @@ namespace BlackCore }; } //namespace } //namespace + #endif // guard diff --git a/src/blackmisc/simulation/remoteaircraftproviderdummy.cpp b/src/blackmisc/simulation/remoteaircraftproviderdummy.cpp index 5f814bc70..708ba8f10 100644 --- a/src/blackmisc/simulation/remoteaircraftproviderdummy.cpp +++ b/src/blackmisc/simulation/remoteaircraftproviderdummy.cpp @@ -17,6 +17,12 @@ namespace BlackMisc { namespace Simulation { + CRemoteAircraftProviderDummy *CRemoteAircraftProviderDummy::instance() + { + static CRemoteAircraftProviderDummy *dummy = new CRemoteAircraftProviderDummy(); + return dummy; + } + CRemoteAircraftProviderDummy::CRemoteAircraftProviderDummy(QObject *parent) : CRemoteAircraftProvider(parent) { } diff --git a/src/blackmisc/simulation/remoteaircraftproviderdummy.h b/src/blackmisc/simulation/remoteaircraftproviderdummy.h index fdd65cca8..1d7b06463 100644 --- a/src/blackmisc/simulation/remoteaircraftproviderdummy.h +++ b/src/blackmisc/simulation/remoteaircraftproviderdummy.h @@ -29,6 +29,9 @@ namespace BlackMisc Q_OBJECT public: + //! Singleton + static CRemoteAircraftProviderDummy *instance(); + //! Constructor CRemoteAircraftProviderDummy(QObject *parent = nullptr); diff --git a/tests/blackcore/vatsim/testnetwork/testnetwork.cpp b/tests/blackcore/vatsim/testnetwork/testnetwork.cpp index 9d1278c04..6654e1ea5 100644 --- a/tests/blackcore/vatsim/testnetwork/testnetwork.cpp +++ b/tests/blackcore/vatsim/testnetwork/testnetwork.cpp @@ -25,6 +25,7 @@ #include "blackmisc/pq/time.h" #include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/simulation/ownaircraftproviderdummy.h" +#include "blackmisc/simulation/remoteaircraftproviderdummy.h" #include "blackmisc/stringutils.h" #include "test.h" @@ -69,7 +70,12 @@ namespace BlackCoreTest void CTestNetwork::initTestCase() { - m_networkVatlib = new CNetworkVatlib(CClientProviderDummy::instance(), COwnAircraftProviderDummy::instance()); + m_networkVatlib = new CNetworkVatlib( + CClientProviderDummy::instance(), + COwnAircraftProviderDummy::instance(), + CRemoteAircraftProviderDummy::instance(), + this + ); } void CTestNetwork::networkTest(BlackCore::INetwork *net)