mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-02-01 18:41:54 +08:00
refactoring
This commit is contained in:
@@ -70,7 +70,7 @@ class _RequestError(Exception):
|
|||||||
self.online = online
|
self.online = online
|
||||||
|
|
||||||
|
|
||||||
class _FatalRequestError(_RequestError):
|
class _PermRequestError(_RequestError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@@ -367,8 +367,8 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst
|
|||||||
|
|
||||||
def __process_request(self, tty: serial.Serial, request: bytes) -> bool: # pylint: disable=too-many-branches
|
def __process_request(self, tty: serial.Serial, request: bytes) -> bool: # pylint: disable=too-many-branches
|
||||||
logger = get_logger()
|
logger = get_logger()
|
||||||
errors: List[str] = []
|
error_messages: List[str] = []
|
||||||
runtime_errors = False
|
live_log_errors = False
|
||||||
|
|
||||||
common_retries = self.__common_retries
|
common_retries = self.__common_retries
|
||||||
read_retries = self.__read_retries
|
read_retries = self.__read_retries
|
||||||
@@ -391,9 +391,9 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst
|
|||||||
elif code == 0x40: # CRC Error
|
elif code == 0x40: # CRC Error
|
||||||
raise _TempRequestError(f"Got CRC error of request from HID: request={request!r}")
|
raise _TempRequestError(f"Got CRC error of request from HID: request={request!r}")
|
||||||
elif code == 0x45: # Unknown command
|
elif code == 0x45: # Unknown command
|
||||||
raise _FatalRequestError(f"HID did not recognize the request={request!r}", online=True)
|
raise _PermRequestError(f"HID did not recognize the request={request!r}", online=True)
|
||||||
elif code == 0x24: # Rebooted?
|
elif code == 0x24: # Rebooted?
|
||||||
raise _FatalRequestError("No previous command state inside HID, seems it was rebooted", online=True)
|
raise _PermRequestError("No previous command state inside HID, seems it was rebooted", online=True)
|
||||||
elif code == 0x20: # Done
|
elif code == 0x20: # Done
|
||||||
self.__state_flags.update(online=True)
|
self.__state_flags.update(online=True)
|
||||||
return True
|
return True
|
||||||
@@ -405,29 +405,28 @@ class Plugin(BaseHid, multiprocessing.Process): # pylint: disable=too-many-inst
|
|||||||
num=bool(code & 0x00000100),
|
num=bool(code & 0x00000100),
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
else:
|
raise _TempRequestError(f"Invalid response from HID: request={request!r}; code=0x{code:02X}")
|
||||||
raise _TempRequestError(f"Invalid response from HID: request={request!r}; code=0x{code:02X}")
|
|
||||||
|
|
||||||
except _RequestError as err:
|
except _RequestError as err:
|
||||||
common_retries -= 1
|
common_retries -= 1
|
||||||
self.__state_flags.update(online=err.online)
|
self.__state_flags.update(online=err.online)
|
||||||
|
|
||||||
if runtime_errors:
|
if live_log_errors:
|
||||||
logger.error(err.msg)
|
logger.error(err.msg)
|
||||||
else:
|
else:
|
||||||
errors.append(err.msg)
|
error_messages.append(err.msg)
|
||||||
if len(errors) > self.__errors_threshold:
|
if len(error_messages) > self.__errors_threshold:
|
||||||
for msg in errors:
|
for msg in error_messages:
|
||||||
logger.error(msg)
|
logger.error(msg)
|
||||||
errors = []
|
error_messages = []
|
||||||
runtime_errors = True
|
live_log_errors = True
|
||||||
|
|
||||||
if isinstance(err, _FatalRequestError):
|
if isinstance(err, _PermRequestError):
|
||||||
break
|
break
|
||||||
if common_retries and read_retries:
|
if common_retries and read_retries:
|
||||||
time.sleep(self.__retries_delay)
|
time.sleep(self.__retries_delay)
|
||||||
|
|
||||||
for msg in errors:
|
for msg in error_messages:
|
||||||
logger.error(msg)
|
logger.error(msg)
|
||||||
if not (common_retries and read_retries):
|
if not (common_retries and read_retries):
|
||||||
logger.error("Can't process HID request due many errors: %r", request)
|
logger.error("Can't process HID request due many errors: %r", request)
|
||||||
|
|||||||
Reference in New Issue
Block a user