From a2cef472b9f66a46d0e0eaf48a7fc27405eabac5 Mon Sep 17 00:00:00 2001 From: Loren Eteval Date: Thu, 7 Mar 2024 00:57:06 +0800 Subject: [PATCH] Move to icmplib implementation Signed-off-by: Loren Eteval --- Furious/Widget/UserServersQTableWidget.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Furious/Widget/UserServersQTableWidget.py b/Furious/Widget/UserServersQTableWidget.py index f46f1945..3631d8f1 100644 --- a/Furious/Widget/UserServersQTableWidget.py +++ b/Furious/Widget/UserServersQTableWidget.py @@ -35,9 +35,9 @@ from PySide6.QtNetwork import * from typing import Callable, Union, Sequence, MutableSequence -import ping3 import queue import logging +import icmplib import functools __all__ = ['UserServersQTableWidget'] @@ -114,13 +114,13 @@ class SubscriptionManager(AppQNetworkAccessManager): for uri in uris: parent.appendNewItem(config=uri, subsId=unique) - if isConnected and subsGroupIndex >= 0: + if subsGroupIndex >= 0: newIndex = remaining + subsGroupIndex if newIndex < len(AS_UserServers()): parent.activateItemByIndex(newIndex, True) - if not APP().isSystemTrayConnected(): + if isConnected and not APP().isSystemTrayConnected(): # Trigger connect APP().systemTray.ConnectAction.trigger() @@ -186,19 +186,20 @@ class TestPingLatencyWorker(ItemUpdateProtocol, QtCore.QObject, QtCore.QRunnable assert isinstance(self.currentItem, ConfigurationFactory) try: - result = ping3.ping(self.currentItem.itemAddress, timeout=2, unit='ms') - except Exception: + result = icmplib.ping(self.currentItem.itemAddress, count=1) + except Exception as ex: # Any non-exit exceptions - self.currentItem.setExtras('delayResult', 'Timeout') + self.currentItem.setExtras('delayResult', str(ex)) self.updateResult() else: - if result is False: - self.currentItem.setExtras('delayResult', 'Error') - elif result is None: - self.currentItem.setExtras('delayResult', 'Timeout') + if result.is_alive: + self.currentItem.setExtras('delayResult', f'{round(result.avg_rtt)}ms') else: - self.currentItem.setExtras('delayResult', f'{round(result)}ms') + if result.packet_loss == 1: + self.currentItem.setExtras('delayResult', 'Timeout') + else: + self.currentItem.setExtras('delayResult', 'Error') self.updateResult()