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/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);

View File

@@ -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);

View File

@@ -7,13 +7,31 @@
*/
#include "network.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/range.h"
#include "blackconfig/buildconfig.h"
#include <QStringBuilder>
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<int, QString> transformed;

View File

@@ -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(); }

View File

@@ -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)

View File

@@ -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

View File

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

View File

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

View File

@@ -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)