mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +08:00
Ref T259, Ref T243 client provider used with network classes
Also adds a dummy testing class
This commit is contained in:
@@ -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(); }
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
/*!
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user