Lower the priority if a transport fails to also try others eventually

lowwer-prio-for-failing-transports
Michael Zanetti 2023-02-14 19:51:34 +01:00
parent 45cdbf1911
commit 7b81aad01a
3 changed files with 15 additions and 1 deletions

View File

@ -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();
}

View File

@ -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--;
}

View File

@ -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