From 7b81aad01acbf898541ba483f838184ec50d075a Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 14 Feb 2023 19:51:34 +0100 Subject: [PATCH] Lower the priority if a transport fails to also try others eventually --- libnymea-app/connection/nymeaconnection.cpp | 1 + libnymea-app/connection/nymeahost.cpp | 12 +++++++++++- libnymea-app/connection/nymeahost.h | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/libnymea-app/connection/nymeaconnection.cpp b/libnymea-app/connection/nymeaconnection.cpp index 7316dde5..8a8484be 100644 --- a/libnymea-app/connection/nymeaconnection.cpp +++ b/libnymea-app/connection/nymeaconnection.cpp @@ -271,6 +271,7 @@ void NymeaConnection::onError(QAbstractSocket::SocketError error) if (!m_currentTransport) { // We're trying to connect and one of the transports failed... if (m_transportCandidates.contains(transport)) { + m_transportCandidates.value(transport)->decreasePriority(); m_transportCandidates.remove(transport); transport->deleteLater(); } diff --git a/libnymea-app/connection/nymeahost.cpp b/libnymea-app/connection/nymeahost.cpp index d80eb89a..6e3d3a64 100644 --- a/libnymea-app/connection/nymeahost.cpp +++ b/libnymea-app/connection/nymeahost.cpp @@ -326,7 +326,7 @@ void Connection::setManual(bool manual) int Connection::priority() const { - int prio = 0; + int prio = m_manualPriorityAdjust; if (m_online) { prio += 1000; prio -= qMin(500, (int)m_lastSeen.secsTo(QDateTime::currentDateTime())); @@ -359,3 +359,13 @@ int Connection::priority() const } return prio; } + +void Connection::increasePriority() +{ + m_manualPriorityAdjust++; +} + +void Connection::decreasePriority() +{ + m_manualPriorityAdjust--; +} diff --git a/libnymea-app/connection/nymeahost.h b/libnymea-app/connection/nymeahost.h index bbeb83f5..e2e6a640 100644 --- a/libnymea-app/connection/nymeahost.h +++ b/libnymea-app/connection/nymeahost.h @@ -78,6 +78,8 @@ public: bool manual() const; void setManual(bool manual); int priority() const; + void increasePriority(); + void decreasePriority(); signals: void onlineChanged(); @@ -91,6 +93,7 @@ private: bool m_online = false; bool m_manual = false; QDateTime m_lastSeen; + int m_manualPriorityAdjust = 0; }; class Connections: public QAbstractListModel