Ref T698, added remote aircraft context to network class

This commit is contained in:
Klaus Basan
2019-07-05 01:48:51 +02:00
committed by Mat Sutcliffe
parent ab83d55d7c
commit 821e7e73c9
9 changed files with 71 additions and 17 deletions

View File

@@ -28,6 +28,7 @@
#include "blackmisc/pq/speed.h" #include "blackmisc/pq/speed.h"
#include "blackmisc/pq/units.h" #include "blackmisc/pq/units.h"
#include "blackmisc/simulation/ownaircraftproviderdummy.h" #include "blackmisc/simulation/ownaircraftproviderdummy.h"
#include "blackmisc/simulation/remoteaircraftproviderdummy.h"
#include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/stringutils.h" #include "blackmisc/stringutils.h"
@@ -55,7 +56,12 @@ namespace BlackSample
: QObject(parent), : QObject(parent),
COwnAircraftAware(COwnAircraftProviderDummy::instance()), COwnAircraftAware(COwnAircraftProviderDummy::instance()),
CIdentifiable("samples:cmdClient"), 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::atcPositionUpdate, this, &Client::atcPositionUpdate);
connect(m_net, &INetwork::atcDisconnected, this, &Client::atcDisconnected); connect(m_net, &INetwork::atcDisconnected, this, &Client::atcDisconnected);

View File

@@ -67,7 +67,11 @@ namespace BlackCore
CContextNetwork::registerHelp(); CContextNetwork::registerHelp();
// 1. Init by "network driver" // 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::connectionStatusChanged, this, &CContextNetwork::onFsdConnectionStatusChanged);
connect(m_network, &INetwork::kicked, this, &CContextNetwork::kicked); connect(m_network, &INetwork::kicked, this, &CContextNetwork::kicked);
connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::textMessagesReceived); connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::textMessagesReceived);

View File

@@ -7,13 +7,31 @@
*/ */
#include "network.h" #include "network.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/range.h" #include "blackmisc/range.h"
#include "blackconfig/buildconfig.h"
#include <QStringBuilder> #include <QStringBuilder>
using namespace BlackConfig;
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Network;
using namespace BlackMisc::Simulation;
namespace BlackCore 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) int INetwork::increaseStatisticsValue(const QString &identifier, const QString &appendix)
{ {
if (identifier.isEmpty() || !m_statistics) { return -1; } if (identifier.isEmpty() || !m_statistics) { return -1; }
@@ -22,6 +40,11 @@ namespace BlackCore
return v; 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) QString INetwork::getNetworkStatisticsAsText(bool reset, const QString &separator)
{ {
QMap<int, QString> transformed; QMap<int, QString> transformed;

View File

@@ -13,6 +13,7 @@
#include "blackcoreexport.h" #include "blackcoreexport.h"
#include "blackmisc/simulation/ownaircraftprovider.h" #include "blackmisc/simulation/ownaircraftprovider.h"
#include "blackmisc/simulation/remoteaircraftprovider.h"
#include "blackmisc/simulation/simulationenvironmentprovider.h" #include "blackmisc/simulation/simulationenvironmentprovider.h"
#include "blackmisc/simulation/simulatorplugininfo.h" #include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/simulation/simulatedaircraft.h"
@@ -62,7 +63,9 @@ namespace BlackCore
public BlackMisc::Network::IEcosystemProvider, // provide info about used ecosystem public BlackMisc::Network::IEcosystemProvider, // provide info about used ecosystem
public BlackMisc::Network::CClientAware, // network can set client information 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::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 public BlackMisc::Simulation::CSimulationEnvironmentAware // allows to consume ground elevations
{ {
Q_OBJECT Q_OBJECT
Q_INTERFACES(BlackMisc::Network::IEcosystemProvider) Q_INTERFACES(BlackMisc::Network::IEcosystemProvider)
@@ -70,12 +73,10 @@ namespace BlackCore
protected: protected:
//! Constructor //! Constructor
INetwork( INetwork(
BlackMisc::Network::IClientProvider *clientProvider, BlackMisc::Network::IClientProvider *clientProvider,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
QObject *parent = nullptr) : BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
QObject(parent), QObject *parent = nullptr);
BlackMisc::Network::CClientAware(clientProvider),
BlackMisc::Simulation::COwnAircraftAware(ownAircraftProvider) {}
public: public:
//! Destructor //! Destructor
@@ -110,8 +111,10 @@ namespace BlackCore
bool isStatisticsEnabled() const { return m_statistics; } 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, const QString &appendix = {});
int increaseStatisticsValue(const QString &identifier, int value);
//! @}
//! Clear the statistics //! Clear the statistics
void clearStatistics() { m_callStatistics.clear(); } void clearStatistics() { m_callStatistics.clear(); }

View File

@@ -83,9 +83,11 @@ namespace BlackCore
return cats; return cats;
} }
CNetworkVatlib::CNetworkVatlib(IClientProvider *clientProvider, CNetworkVatlib::CNetworkVatlib(IClientProvider *clientProvider,
IOwnAircraftProvider *ownAircraftProvider, QObject *parent) IOwnAircraftProvider *ownAircraftProvider,
: INetwork(clientProvider, ownAircraftProvider, parent), IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent)
: INetwork(clientProvider, ownAircraftProvider, remoteAircraftProvider, parent),
m_loginMode(LoginNormal), m_loginMode(LoginNormal),
m_status(vatStatusDisconnected), m_status(vatStatusDisconnected),
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1) m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)

View File

@@ -64,10 +64,10 @@ namespace BlackCore
static const BlackMisc::CLogCategoryList &getLogCategories(); static const BlackMisc::CLogCategoryList &getLogCategories();
//! Constructor //! Constructor
CNetworkVatlib( CNetworkVatlib(BlackMisc::Network::IClientProvider *clientProvider,
BlackMisc::Network::IClientProvider *clientProvider, BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider, BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
QObject *parent = nullptr); QObject *parent);
//! Destructor //! Destructor
virtual ~CNetworkVatlib() override; virtual ~CNetworkVatlib() override;
@@ -313,4 +313,5 @@ namespace BlackCore
}; };
} //namespace } //namespace
} //namespace } //namespace
#endif // guard #endif // guard

View File

@@ -17,6 +17,12 @@ namespace BlackMisc
{ {
namespace Simulation namespace Simulation
{ {
CRemoteAircraftProviderDummy *CRemoteAircraftProviderDummy::instance()
{
static CRemoteAircraftProviderDummy *dummy = new CRemoteAircraftProviderDummy();
return dummy;
}
CRemoteAircraftProviderDummy::CRemoteAircraftProviderDummy(QObject *parent) : CRemoteAircraftProvider(parent) CRemoteAircraftProviderDummy::CRemoteAircraftProviderDummy(QObject *parent) : CRemoteAircraftProvider(parent)
{ } { }

View File

@@ -29,6 +29,9 @@ namespace BlackMisc
Q_OBJECT Q_OBJECT
public: public:
//! Singleton
static CRemoteAircraftProviderDummy *instance();
//! Constructor //! Constructor
CRemoteAircraftProviderDummy(QObject *parent = nullptr); CRemoteAircraftProviderDummy(QObject *parent = nullptr);

View File

@@ -25,6 +25,7 @@
#include "blackmisc/pq/time.h" #include "blackmisc/pq/time.h"
#include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/simulation/ownaircraftproviderdummy.h" #include "blackmisc/simulation/ownaircraftproviderdummy.h"
#include "blackmisc/simulation/remoteaircraftproviderdummy.h"
#include "blackmisc/stringutils.h" #include "blackmisc/stringutils.h"
#include "test.h" #include "test.h"
@@ -69,7 +70,12 @@ namespace BlackCoreTest
void CTestNetwork::initTestCase() 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) void CTestNetwork::networkTest(BlackCore::INetwork *net)