Ref T261, correct implementation of client provider

* made the interface a "real" interface and provided implementation as CCLientProvider
* aligned some function names with networl context
* network context "impl" also implements ICLientProvider
This commit is contained in:
Klaus Basan
2018-05-04 22:13:02 +02:00
committed by Roland Winklmeier
parent 3031e5b648
commit 5bf21c2937
19 changed files with 185 additions and 65 deletions

View File

@@ -205,10 +205,13 @@ namespace BlackCore
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Information about other clients
virtual BlackMisc::Network::CClientList getOtherClients() const = 0;
virtual BlackMisc::Network::CClientList getClients() const = 0;
//! Clients for given callsign, e.g. to test/fetch direct aircraft model
virtual BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const = 0;
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const = 0;
//! Set client for given callsign
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) = 0;
//! Known voice servers, available when data file was first read
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const = 0;

View File

@@ -193,21 +193,29 @@ namespace BlackCore
return BlackMisc::Network::CUser();
}
//! \copydoc IContextNetwork::getOtherClients
virtual BlackMisc::Network::CClientList getOtherClients() const override
//! \copydoc IContextNetwork::getClients
virtual BlackMisc::Network::CClientList getClients() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Network::CClientList();
}
//! \copydoc IContextNetwork::getOtherClientsForCallsigns
virtual BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override
//! \copydoc IContextNetwork::getClientsForCallsigns
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override
{
Q_UNUSED(callsigns);
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Network::CClientList();
}
//! \copydoc IContextNetwork::setOtherClient
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override
{
Q_UNUSED(client);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextNetwork::requestDataUpdates
virtual void requestDataUpdates()override
{

View File

@@ -389,18 +389,34 @@ namespace BlackCore
return users[0];
}
CClientList CContextNetwork::getOtherClients() const
CClientList CContextNetwork::getClients() const
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
return m_airspace->getClients();
}
CClientList CContextNetwork::getOtherClientsForCallsigns(const CCallsignSet &callsigns) const
CClientList CContextNetwork::getClientsForCallsigns(const CCallsignSet &callsigns) const
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
return m_airspace->getClientsForCallsigns(callsigns);
}
bool CContextNetwork::setOtherClient(const CClient &client)
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
return m_airspace->setOtherClient(client);
}
int CContextNetwork::removeClient(const Aviation::CCallsign &callsign)
{
return m_airspace->removeClient(callsign);
}
bool CContextNetwork::autoAdjustCientGndCapability(const Aviation::CAircraftSituation &situation)
{
return m_airspace->autoAdjustCientGndCapability(situation);
}
CServerList CContextNetwork::getVatsimFsdServers() const
{
Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "Missing data reader");
@@ -762,6 +778,36 @@ namespace BlackCore
return m_airspace->getLatestAirspaceAircraftSnapshot();
}
void CContextNetwork::setClients(const CClientList &clients)
{
m_airspace->setClients(clients);
}
void CContextNetwork::clearClients()
{
m_airspace->clearClients();
}
CClient CContextNetwork::getClientOrDefaultForCallsign(const Aviation::CCallsign &callsign) const
{
return m_airspace->getClientOrDefaultForCallsign(callsign);
}
bool CContextNetwork::hasClientInfo(const Aviation::CCallsign &callsign) const
{
return m_airspace->hasClientInfo(callsign);
}
bool CContextNetwork::addNewClient(const CClient &client)
{
return m_airspace->addNewClient(client);
}
int CContextNetwork::updateOrAddClient(const Aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues)
{
return m_airspace->updateOrAddClient(callsign, vm, skipEqualValues);
}
void CContextNetwork::setFastPositionEnabledCallsigns(CCallsignSet &callsigns)
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsigns; }

View File

@@ -32,6 +32,7 @@
#include "blackmisc/aviation/callsignset.h"
#include "blackmisc/aviation/flightplan.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/clientprovider.h"
#include "blackmisc/network/server.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/textmessagelist.h"
@@ -73,10 +74,12 @@ namespace BlackCore
//! Network context implementation
class BLACKCORE_EXPORT CContextNetwork :
public IContextNetwork,
public BlackMisc::Simulation::IRemoteAircraftProvider
public BlackMisc::Simulation::IRemoteAircraftProvider,
public BlackMisc::Network::IClientProvider
{
Q_OBJECT
Q_INTERFACES(BlackMisc::Simulation::IRemoteAircraftProvider)
Q_INTERFACES(BlackMisc::Network::IClientProvider)
Q_CLASSINFO("D-Bus Interface", BLACKCORE_CONTEXTNETWORK_INTERFACENAME)
friend class IContextNetwork;
@@ -107,6 +110,18 @@ namespace BlackCore
virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const override;
//! @}
//! \ingroup clientprovider
//! @{
virtual void setClients(const BlackMisc::Network::CClientList &clients) override;
virtual void clearClients() override;
virtual BlackMisc::Network::CClient getClientOrDefaultForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool hasClientInfo(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool addNewClient(const BlackMisc::Network::CClient &client) override;
virtual int updateOrAddClient(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::CPropertyIndexVariantMap &vm, bool skipEqualValues = true) override;
virtual int removeClient(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual bool autoAdjustCientGndCapability(const BlackMisc::Aviation::CAircraftSituation &situation) override;
//! @}
public slots:
// from context and provider interface
//! \ingroup remoteaircraftprovider
@@ -138,6 +153,13 @@ namespace BlackCore
virtual bool testAddAltitudeOffset(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &offset = BlackMisc::PhysicalQuantities::CLength::null()) override;
//! @}
//! \ingroup clientprovider
//! @{
virtual BlackMisc::Network::CClientList getClients() const override;
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override;
//! @}
//! In transition state, e.g. connecting, disconnecting.
//! \details In such a state it is advisable to wait until an end state (connected/disconnected) is reached
//! \remarks Intentionally only running locally, not in interface
@@ -183,8 +205,6 @@ namespace BlackCore
virtual BlackMisc::Network::CUserList getUsers() const override;
virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Network::CClientList getOtherClients() const override;
virtual BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override;
virtual void requestDataUpdates()override;

View File

@@ -160,9 +160,9 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<BlackMisc::Network::CUser>(QLatin1String("getUserForCallsign"), callsign);
}
CClientList CContextNetworkProxy::getOtherClients() const
CClientList CContextNetworkProxy::getClients() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Network::CClientList>(QLatin1String("getOtherClients"));
return m_dBusInterface->callDBusRet<BlackMisc::Network::CClientList>(QLatin1String("getClients"));
}
CServerList CContextNetworkProxy::getVatsimFsdServers() const
@@ -175,9 +175,14 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<BlackMisc::Network::CServerList>(QLatin1String("getVatsimVoiceServers"));
}
CClientList CContextNetworkProxy::getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const
CClientList CContextNetworkProxy::getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Network::CClientList>(QLatin1String("getOtherClientsForCallsigns"), callsigns);
return m_dBusInterface->callDBusRet<BlackMisc::Network::CClientList>(QLatin1String("getClientsForCallsigns"), callsigns);
}
bool CContextNetworkProxy::setOtherClient(const CClient &client)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setOtherClientForCallsign"), client);
}
CVoiceRoomList CContextNetworkProxy::getSelectedVoiceRooms() const

View File

@@ -98,10 +98,11 @@ namespace BlackCore
virtual BlackMisc::Network::CUserList getUsers() const override;
virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Network::CClientList getOtherClients() const override;
virtual BlackMisc::Network::CClientList getClients() const override;
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override;
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
virtual BlackMisc::Network::CClientList getOtherClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override;
virtual void requestDataUpdates()override;
virtual void requestAtisUpdates() override;
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) override;

View File

@@ -342,7 +342,8 @@ namespace BlackCore
Q_ASSERT_X(this->getIContextNetwork()->isUsingImplementingObject(), Q_FUNC_INFO, "Need implementing object");
IOwnAircraftProvider *ownAircraftProvider = this->getRuntime()->getCContextOwnAircraft();
IRemoteAircraftProvider *renderedAircraftProvider = this->getRuntime()->getCContextNetwork();
ISimulator *simulator = factory->create(simulatorPluginInfo, ownAircraftProvider, renderedAircraftProvider, &m_weatherManager);
IClientProvider *clientProvider = this->getRuntime()->getCContextNetwork();
ISimulator *simulator = factory->create(simulatorPluginInfo, ownAircraftProvider, renderedAircraftProvider, &m_weatherManager, clientProvider);
Q_ASSERT_X(simulator, Q_FUNC_INFO, "no simulator driver can be created");
this->setRemoteAircraftProvider(renderedAircraftProvider);