From 9a84376b5d1ee92fba3c8997d1b21e0810648fbd Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 15 Nov 2014 01:50:12 +0100 Subject: [PATCH] refs #288, adjusted network context * new login method * signals for booking / data file read --- src/blackcore/context_network.h | 8 ++++- src/blackcore/context_network_empty.h | 5 +-- src/blackcore/context_network_impl.cpp | 41 +++++++++++++------------ src/blackcore/context_network_impl.h | 2 +- src/blackcore/context_network_proxy.cpp | 10 ++++-- src/blackcore/context_network_proxy.h | 4 +-- 6 files changed, 42 insertions(+), 28 deletions(-) diff --git a/src/blackcore/context_network.h b/src/blackcore/context_network.h index 634d20e7c..80f800068 100644 --- a/src/blackcore/context_network.h +++ b/src/blackcore/context_network.h @@ -95,6 +95,12 @@ namespace BlackCore //! Terminated connection void connectionTerminated(); + //! VATSIM data file was read + void vatsimDataFileRead(); + + //! Bookings read + void vatsimBookingsRead(); + /*! * Connection status changed * \param from old status @@ -151,7 +157,7 @@ namespace BlackCore * \return messages gererated during connecting * \see INetwork::LoginMode */ - virtual BlackMisc::CStatusMessage connectToNetwork(uint loginMode) = 0; + virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint loginMode) = 0; /*! * Disconnect from network diff --git a/src/blackcore/context_network_empty.h b/src/blackcore/context_network_empty.h index fa7f7965f..8e2e400df 100644 --- a/src/blackcore/context_network_empty.h +++ b/src/blackcore/context_network_empty.h @@ -60,10 +60,11 @@ namespace BlackCore return BlackMisc::Aviation::CAircraftList(); } - //! \copydoc IContextNetwork::connectToNetwork() - virtual BlackMisc::CStatusMessage connectToNetwork(uint mode) override + //! \copydoc IContextNetwork::connectToNetwork + virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override { Q_UNUSED(mode); + Q_UNUSED(server); logEmptyContextWarning(Q_FUNC_INFO); return statusMessageEmptyContext(); } diff --git a/src/blackcore/context_network_impl.cpp b/src/blackcore/context_network_impl.cpp index 16796f29b..4feac9eb2 100644 --- a/src/blackcore/context_network_impl.cpp +++ b/src/blackcore/context_network_impl.cpp @@ -46,36 +46,36 @@ namespace BlackCore // 1. Init by "network driver" this->m_network = new CNetworkVatlib(this); - this->connect(this->m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::ps_fsdConnectionStatusChanged); - this->connect(this->m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::ps_fsdTextMessageReceived); + connect(this->m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::ps_fsdConnectionStatusChanged); + connect(this->m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::ps_fsdTextMessageReceived); // 2. VATSIM bookings this->m_vatsimBookingReader = new CVatsimBookingReader(this->getRuntime()->getIContextSettings()->getNetworkSettings().getBookingServiceUrl(), this); - this->connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CContextNetwork::ps_receivedBookings); + connect(this->m_vatsimBookingReader, &CVatsimBookingReader::dataRead, this, &CContextNetwork::ps_receivedBookings); this->m_vatsimBookingReader->read(); // first read this->m_vatsimBookingReader->setInterval(180 * 1000); // 3. VATSIM data file const QStringList dataFileUrls = { "http://info.vroute.net/vatsim-data.txt" }; this->m_vatsimDataFileReader = new CVatsimDataFileReader(dataFileUrls, this); - this->connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CContextNetwork::ps_dataFileRead); + connect(this->m_vatsimDataFileReader, &CVatsimDataFileReader::dataRead, this, &CContextNetwork::ps_dataFileRead); this->m_vatsimDataFileReader->read(); // first read this->m_vatsimDataFileReader->setInterval(90 * 1000); // 4. Update timer for data (network data such as frequency) this->m_dataUpdateTimer = new QTimer(this); - this->connect(this->m_dataUpdateTimer, &QTimer::timeout, this, &CContextNetwork::requestDataUpdates); + connect(this->m_dataUpdateTimer, &QTimer::timeout, this, &CContextNetwork::requestDataUpdates); this->m_dataUpdateTimer->start(30 * 1000); // 5. Airspace contents this->m_airspace = new CAirspaceMonitor(this, this->m_network, this->m_vatsimBookingReader, this->m_vatsimDataFileReader); - this->connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationsOnline, this, &CContextNetwork::changedAtcStationsOnline); - this->connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationsBooked, this, &CContextNetwork::changedAtcStationsBooked); - this->connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationOnlineConnectionStatus, this, &CContextNetwork::changedAtcStationOnlineConnectionStatus); - this->connect(this->m_airspace, &CAirspaceMonitor::changedAircraftsInRange, this, &CContextNetwork::changedAircraftsInRange); - this->connect(this->m_airspace, &CAirspaceMonitor::changedAircraftSituation, this, &CContextNetwork::changedAircraftSituation); - this->connect(this->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraft, this->m_airspace, &CAirspaceMonitor::setOwnAircraft); - this->connect(this->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this->m_airspace, &CAirspaceMonitor::setOwnAircraftModel); + connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationsOnline, this, &CContextNetwork::changedAtcStationsOnline); + connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationsBooked, this, &CContextNetwork::changedAtcStationsBooked); + connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationOnlineConnectionStatus, this, &CContextNetwork::changedAtcStationOnlineConnectionStatus); + connect(this->m_airspace, &CAirspaceMonitor::changedAircraftsInRange, this, &CContextNetwork::changedAircraftsInRange); + connect(this->m_airspace, &CAirspaceMonitor::changedAircraftSituation, this, &CContextNetwork::changedAircraftSituation); + connect(this->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraft, this->m_airspace, &CAirspaceMonitor::setOwnAircraft); + connect(this->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this->m_airspace, &CAirspaceMonitor::setOwnAircraftModel); } /* @@ -99,13 +99,11 @@ namespace BlackCore /* * Connect to network */ - CStatusMessage CContextNetwork::connectToNetwork(uint loginMode) + CStatusMessage CContextNetwork::connectToNetwork(const CServer &server, uint loginMode) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; - CServer currentServer = this->getIContextSettings()->getNetworkSettings().getCurrentTrafficNetworkServer(); - QString msg; - if (!currentServer.getUser().isValid()) + if (!server.getUser().isValid()) { return CLogMessage(this).error("Invalid user credentials"); } @@ -113,7 +111,7 @@ namespace BlackCore { return CLogMessage(this).error("Invalid ICAO data for own aircraft"); } - else if (!CNetworkUtils::canConnect(currentServer, msg, 2000)) + else if (!CNetworkUtils::canConnect(server, msg, 2000)) { return CLogMessage(this).error(msg); } @@ -129,15 +127,15 @@ namespace BlackCore { this->m_currentStatus = INetwork::Connecting; // as semaphore we are going to connect INetwork::LoginMode mode = static_cast(loginMode); - this->getIContextOwnAircraft()->updatePilot(currentServer.getUser(), this->getPathAndContextId()); + this->getIContextOwnAircraft()->updatePilot(server.getUser(), this->getPathAndContextId()); const CAircraft ownAircraft = this->ownAircraft(); - this->m_network->presetServer(currentServer); + this->m_network->presetServer(server); this->m_network->presetLoginMode(mode); this->m_network->presetCallsign(ownAircraft.getCallsign()); this->m_network->presetIcaoCodes(ownAircraft.getIcaoInfo()); this->m_network->setOwnAircraft(ownAircraft); this->m_network->initiateConnection(); - return CLogMessage(this).info("Connection pending %1 %2") << currentServer.getAddress() << currentServer.getPort(); + return CLogMessage(this).info("Connection pending %1 %2") << server.getAddress() << server.getPort(); } } @@ -328,6 +326,7 @@ namespace BlackCore { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; CLogMessage(this).info("Read VATSIM data file"); + emit vatsimDataFileRead(); } /* @@ -367,7 +366,9 @@ namespace BlackCore */ void CContextNetwork::ps_receivedBookings(const CAtcStationList &) { + CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; CLogMessage(this).info("Read bookings from network"); + emit vatsimBookingsRead(); } /* diff --git a/src/blackcore/context_network_impl.h b/src/blackcore/context_network_impl.h index b78534225..ae0a2abb9 100644 --- a/src/blackcore/context_network_impl.h +++ b/src/blackcore/context_network_impl.h @@ -75,7 +75,7 @@ namespace BlackCore } //! \copydoc IContextNetwork::connectToNetwork() - virtual BlackMisc::CStatusMessage connectToNetwork(uint mode) override; + virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override; //! \copydoc IContextNetwork::disconnectFromNetwork() virtual BlackMisc::CStatusMessage disconnectFromNetwork() override; diff --git a/src/blackcore/context_network_proxy.cpp b/src/blackcore/context_network_proxy.cpp index eb0d2b806..0e809a2ff 100644 --- a/src/blackcore/context_network_proxy.cpp +++ b/src/blackcore/context_network_proxy.cpp @@ -58,6 +58,12 @@ namespace BlackCore s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(), "textMessagesReceived", this, SIGNAL(textMessagesReceived(BlackMisc::Network::CTextMessageList))); Q_ASSERT(s); + s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(), + "vatsimDataFileRead", this, SIGNAL(vatsimDataFileRead())); + Q_ASSERT(s); + s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(), + "vatsimBookingsRead", this, SIGNAL(vatsimBookingsRead())); + Q_ASSERT(s); Q_UNUSED(s); } @@ -141,9 +147,9 @@ namespace BlackCore this->m_dBusInterface->callDBus(QLatin1Literal("testCreateDummyOnlineAtcStations"), number); } - BlackMisc::CStatusMessage CContextNetworkProxy::connectToNetwork(uint loginMode) + BlackMisc::CStatusMessage CContextNetworkProxy::connectToNetwork(const Network::CServer &server, uint loginMode) { - return this->m_dBusInterface->callDBusRet(QLatin1Literal("connectToNetwork"), loginMode); + return this->m_dBusInterface->callDBusRet(QLatin1Literal("connectToNetwork"), server, loginMode); } BlackMisc::CStatusMessage CContextNetworkProxy::disconnectFromNetwork() diff --git a/src/blackcore/context_network_proxy.h b/src/blackcore/context_network_proxy.h index e3ebcc5bf..e44104152 100644 --- a/src/blackcore/context_network_proxy.h +++ b/src/blackcore/context_network_proxy.h @@ -65,8 +65,8 @@ namespace BlackCore //! \copydoc IContextNetwork::getAircraftsInRange() virtual const BlackMisc::Aviation::CAircraftList getAircraftsInRange() const override; - //! \copydoc IContextNetwork::connectToNetwork() - virtual BlackMisc::CStatusMessage connectToNetwork(uint mode) override; + //! \copydoc IContextNetwork::connectToNetwork + virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override; //! \copydoc IContextNetwork::disconnectFromNetwork() virtual BlackMisc::CStatusMessage disconnectFromNetwork() override;