Ref T259, Ref T243 client provider used with network classes

Also adds a dummy testing class
This commit is contained in:
Klaus Basan
2018-03-08 20:07:47 +01:00
parent 27f97f729d
commit 2a0b81de5b
9 changed files with 44 additions and 15 deletions

View File

@@ -65,7 +65,7 @@ namespace BlackCore
CContextNetwork::registerHelp();
// 1. Init by "network driver"
m_network = new CNetworkVatlib(this->getRuntime()->getCContextOwnAircraft(), this);
m_network = new CNetworkVatlib(nullptr, this->getRuntime()->getCContextOwnAircraft(), 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);
@@ -80,6 +80,7 @@ namespace BlackCore
// 3. Airspace contents
Q_ASSERT_X(this->getRuntime()->getCContextOwnAircraft(), Q_FUNC_INFO, "this and own aircraft context must be local");
m_airspace = new CAirspaceMonitor(this->getRuntime()->getCContextOwnAircraft(), m_network, this);
m_network->setClientProvider(m_airspace);
connect(m_airspace, &CAirspaceMonitor::changedAtcStationsOnline, this, &CContextNetwork::changedAtcStationsOnline);
connect(m_airspace, &CAirspaceMonitor::changedAtcStationsBooked, this, &CContextNetwork::changedAtcStationsBooked);
connect(m_airspace, &CAirspaceMonitor::changedAtcStationOnlineConnectionStatus, this, &CContextNetwork::changedAtcStationOnlineConnectionStatus);
@@ -146,6 +147,7 @@ namespace BlackCore
{
this->disconnect(); // all signals
if (this->isConnected()) { this->disconnectFromNetwork(); }
if (m_network) { m_network->setClientProvider(nullptr); }
if (m_airspace) { m_airspace->gracefulShutdown(); }
}

View File

@@ -17,13 +17,15 @@
#include "blackmisc/simulation/simulationenvironmentprovider.h"
#include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/geo/coordinategeodetic.h"
#include "blackmisc/network/rawfsdmessage.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/clientprovider.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/textmessagelist.h"
#include "blackmisc/aviation/informationmessage.h"
#include "blackmisc/aviation/flightplan.h"
#include "blackmisc/aviation/callsignset.h"
#include "blackmisc/geo/coordinategeodetic.h"
#include "blackmisc/pq/frequency.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
@@ -57,6 +59,7 @@ namespace BlackCore
*/
class BLACKCORE_EXPORT INetwork :
public QObject,
public BlackMisc::Network::CClientAware, // 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::CSimulationEnvironmentAware // allows to consume ground elevations
{
@@ -66,9 +69,13 @@ namespace BlackCore
/*!
* Constructor
*/
INetwork(BlackMisc::Simulation::IOwnAircraftProvider *ownAircraft, QObject *parent = nullptr) :
INetwork(
BlackMisc::Network::IClientProvider *clientProvider,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
QObject *parent = nullptr) :
QObject(parent),
BlackMisc::Simulation::COwnAircraftAware(ownAircraft) {}
BlackMisc::Network::CClientAware(clientProvider),
BlackMisc::Simulation::COwnAircraftAware(ownAircraftProvider) {}
public:
/*!

View File

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

View File

@@ -64,7 +64,10 @@ namespace BlackCore
static const BlackMisc::CLogCategoryList &getLogCategories();
//! Constructor
CNetworkVatlib(BlackMisc::Simulation::IOwnAircraftProvider *ownAircraft, QObject *parent = nullptr);
CNetworkVatlib(
BlackMisc::Network::IClientProvider *clientProvider,
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
QObject *parent = nullptr);
//! Destructor
virtual ~CNetworkVatlib();

View File

@@ -118,6 +118,12 @@ namespace BlackMisc
if (m_clientProvider) { return m_clientProvider->removeClient(callsign); }
return 0;
}
CClientProviderDummy *CClientProviderDummy::instance()
{
static CClientProviderDummy *dummy = new CClientProviderDummy();
return dummy;
}
}
// namespace
} // namespace

View File

@@ -105,9 +105,17 @@ namespace BlackMisc
CClientAware() {}
//! Constructor
CClientAware(IClientProvider *clientProvider) : m_clientProvider(clientProvider) { Q_ASSERT(clientProvider); }
CClientAware(IClientProvider *clientProvider) : m_clientProvider(clientProvider) { }
IClientProvider *m_clientProvider = nullptr; //!< access to object
};
//! Client provider dummy for testing
class BLACKMISC_EXPORT CClientProviderDummy: public IClientProvider
{
public:
//! Dummy instance
static CClientProviderDummy *instance();
};
} // namespace
} // namespace