summaryrefslogtreecommitdiffstats
path: root/src/network/bearer
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/bearer')
-rw-r--r--src/network/bearer/qbearerengine.cpp70
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp25
-rw-r--r--src/network/bearer/qsharednetworksession.cpp5
3 files changed, 42 insertions, 58 deletions
diff --git a/src/network/bearer/qbearerengine.cpp b/src/network/bearer/qbearerengine.cpp
index dda1229a17..215cd3fddd 100644
--- a/src/network/bearer/qbearerengine.cpp
+++ b/src/network/bearer/qbearerengine.cpp
@@ -38,11 +38,30 @@
****************************************************************************/
#include "qbearerengine_p.h"
+#include <algorithm>
#ifndef QT_NO_BEARERMANAGEMENT
QT_BEGIN_NAMESPACE
+static void cleanUpConfigurations(QHash<QString, QNetworkConfigurationPrivatePointer> &configurations)
+{
+ for (const auto &ptr : qAsConst(configurations)) {
+ ptr->isValid = false;
+ ptr->id.clear();
+ }
+ configurations.clear();
+}
+
+static bool hasUsedConfiguration(const QHash<QString, QNetworkConfigurationPrivatePointer> &configurations)
+{
+ auto isUsed = [](const QNetworkConfigurationPrivatePointer &ptr) {
+ return ptr->ref.load() > 1;
+ };
+ const auto end = configurations.end();
+ return std::find_if(configurations.begin(), end, isUsed) != end;
+}
+
QBearerEngine::QBearerEngine(QObject *parent)
: QObject(parent), mutex(QMutex::Recursive)
{
@@ -50,28 +69,9 @@ QBearerEngine::QBearerEngine(QObject *parent)
QBearerEngine::~QBearerEngine()
{
- QHash<QString, QNetworkConfigurationPrivatePointer>::Iterator it;
- QHash<QString, QNetworkConfigurationPrivatePointer>::Iterator end;
-
- for (it = snapConfigurations.begin(), end = snapConfigurations.end(); it != end; ++it) {
- it.value()->isValid = false;
- it.value()->id.clear();
- }
- snapConfigurations.clear();
-
- for (it = accessPointConfigurations.begin(), end = accessPointConfigurations.end();
- it != end; ++it) {
- it.value()->isValid = false;
- it.value()->id.clear();
- }
- accessPointConfigurations.clear();
-
- for (it = userChoiceConfigurations.begin(), end = userChoiceConfigurations.end();
- it != end; ++it) {
- it.value()->isValid = false;
- it.value()->id.clear();
- }
- userChoiceConfigurations.clear();
+ cleanUpConfigurations(snapConfigurations);
+ cleanUpConfigurations(accessPointConfigurations);
+ cleanUpConfigurations(userChoiceConfigurations);
}
bool QBearerEngine::requiresPolling() const
@@ -87,30 +87,10 @@ bool QBearerEngine::requiresPolling() const
*/
bool QBearerEngine::configurationsInUse() const
{
- QHash<QString, QNetworkConfigurationPrivatePointer>::ConstIterator it;
- QHash<QString, QNetworkConfigurationPrivatePointer>::ConstIterator end;
-
QMutexLocker locker(&mutex);
-
- for (it = accessPointConfigurations.constBegin(),
- end = accessPointConfigurations.constEnd(); it != end; ++it) {
- if (it.value()->ref.load() > 1)
- return true;
- }
-
- for (it = snapConfigurations.constBegin(),
- end = snapConfigurations.constEnd(); it != end; ++it) {
- if (it.value()->ref.load() > 1)
- return true;
- }
-
- for (it = userChoiceConfigurations.constBegin(),
- end = userChoiceConfigurations.constEnd(); it != end; ++it) {
- if (it.value()->ref.load() > 1)
- return true;
- }
-
- return false;
+ return hasUsedConfiguration(accessPointConfigurations)
+ || hasUsedConfiguration(snapConfigurations)
+ || hasUsedConfiguration(userChoiceConfigurations);
}
#include "moc_qbearerengine_p.cpp"
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index 3101a98165..232875f43c 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -52,6 +52,8 @@
#include <QtCore/qbytearray.h>
#include <QtCore/qglobal.h>
+#include <utility>
+
#ifndef QT_NO_BEARERMANAGEMENT
@@ -263,17 +265,18 @@ QNetworkConfiguration QNetworkConfigurationManagerPrivate::configurationFromIden
foreach (QBearerEngine *engine, sessionEngines) {
QMutexLocker locker(&engine->mutex);
-
- if (engine->accessPointConfigurations.contains(identifier))
- item.d = engine->accessPointConfigurations[identifier];
- else if (engine->snapConfigurations.contains(identifier))
- item.d = engine->snapConfigurations[identifier];
- else if (engine->userChoiceConfigurations.contains(identifier))
- item.d = engine->userChoiceConfigurations[identifier];
- else
- continue;
-
- return item;
+ if (auto ptr = engine->accessPointConfigurations.value(identifier)) {
+ item.d = std::move(ptr);
+ break;
+ }
+ if (auto ptr = engine->snapConfigurations.value(identifier)) {
+ item.d = std::move(ptr);
+ break;
+ }
+ if (auto ptr = engine->userChoiceConfigurations.value(identifier)) {
+ item.d = std::move(ptr);
+ break;
+ }
}
return item;
diff --git a/src/network/bearer/qsharednetworksession.cpp b/src/network/bearer/qsharednetworksession.cpp
index e04c8cc953..fc01acb8b4 100644
--- a/src/network/bearer/qsharednetworksession.cpp
+++ b/src/network/bearer/qsharednetworksession.cpp
@@ -65,9 +65,10 @@ static void doDeleteLater(QObject* obj)
QSharedPointer<QNetworkSession> QSharedNetworkSessionManager::getSession(const QNetworkConfiguration &config)
{
QSharedNetworkSessionManager *m(sharedNetworkSessionManager());
+ const auto it = m->sessions.constFind(config);
//if already have a session, return it
- if (m->sessions.contains(config)) {
- QSharedPointer<QNetworkSession> p = m->sessions.value(config).toStrongRef();
+ if (it != m->sessions.cend()) {
+ QSharedPointer<QNetworkSession> p = it.value().toStrongRef();
if (!p.isNull())
return p;
}