39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import logging
|
||
|
|
import time
|
||
|
|
|
||
|
|
logger = logging.getLogger(__name__)
|
||
|
|
|
||
|
|
|
||
|
|
class ILinkStatus:
|
||
|
|
def __init__(self):
|
||
|
|
self.connected = False
|
||
|
|
self.last_poll_at: float = 0.0
|
||
|
|
self.last_token_refresh_at: float = 0.0
|
||
|
|
self.poll_errors: int = 0
|
||
|
|
self.token_errors: int = 0
|
||
|
|
|
||
|
|
def record_poll_success(self) -> None:
|
||
|
|
self.last_poll_at = time.time()
|
||
|
|
self.poll_errors = 0
|
||
|
|
|
||
|
|
def record_poll_error(self) -> None:
|
||
|
|
self.poll_errors += 1
|
||
|
|
|
||
|
|
def record_token_refresh(self) -> None:
|
||
|
|
self.last_token_refresh_at = time.time()
|
||
|
|
self.token_errors = 0
|
||
|
|
|
||
|
|
def record_token_error(self) -> None:
|
||
|
|
self.token_errors += 1
|
||
|
|
|
||
|
|
def build_summary(self) -> dict:
|
||
|
|
return {
|
||
|
|
"connected": self.connected,
|
||
|
|
"last_poll_at": self.last_poll_at,
|
||
|
|
"last_token_refresh_at": self.last_token_refresh_at,
|
||
|
|
"poll_errors": self.poll_errors,
|
||
|
|
"token_errors": self.token_errors,
|
||
|
|
}
|