From 291c52d4e02550542814a4a0c5a93b60618246d1 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 31 Jan 2014 02:13:38 +0100 Subject: [PATCH] Added check if network connection can be established as discussed in #101 --- src/blackcore/context_network.cpp | 32 ++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/blackcore/context_network.cpp b/src/blackcore/context_network.cpp index 14a20b3e9..99cd8c4dd 100644 --- a/src/blackcore/context_network.cpp +++ b/src/blackcore/context_network.cpp @@ -5,6 +5,7 @@ #include "context_network.h" #include "coreruntime.h" +#include "blackmisc/networkchecks.h" #include "blackmisc/avatcstationlist.h" #include "blackcore/context_settings_interface.h" #include @@ -107,17 +108,26 @@ namespace BlackCore } else { - INetwork::LoginMode mode = static_cast(loginMode); - this->m_ownAircraft.setPilot(currentServer.getUser()); // still needed? - this->m_network->presetServer(currentServer); - this->m_network->presetLoginMode(mode); - this->m_network->presetCallsign(this->m_ownAircraft.getCallsign()); - this->m_network->presetIcaoCodes(this->m_ownAircraft.getIcaoInfo()); - this->m_network->setOwnAircraft(this->m_ownAircraft); - this->m_network->initiateConnection(); - QString msg = "Connection pending "; - msg.append(" ").append(currentServer.getAddress()).append(" ").append(QString::number(currentServer.getPort())); - msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityInfo, msg)); + QString msg; + if (CNetworkChecks::canConnect(currentServer, msg, 2000)) + { + INetwork::LoginMode mode = static_cast(loginMode); + this->m_ownAircraft.setPilot(currentServer.getUser()); // still needed? + this->m_network->presetServer(currentServer); + this->m_network->presetLoginMode(mode); + this->m_network->presetCallsign(this->m_ownAircraft.getCallsign()); + this->m_network->presetIcaoCodes(this->m_ownAircraft.getIcaoInfo()); + this->m_network->setOwnAircraft(this->m_ownAircraft); + this->m_network->initiateConnection(); + msg = "Connection pending "; + msg.append(" ").append(currentServer.getAddress()).append(" ").append(QString::number(currentServer.getPort())); + msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityInfo, msg)); + } + else + { + // I cannot connect, add error message + msgs.push_back(CStatusMessage(CStatusMessage::TypeTrafficNetwork, CStatusMessage::SeverityError, msg)); + } } return msgs; }