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:
@@ -408,12 +408,12 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
|
|||||||
# ===== SYSTEM TASKS
|
# ===== SYSTEM TASKS
|
||||||
|
|
||||||
async def __stream_controller(self) -> None:
|
async def __stream_controller(self) -> None:
|
||||||
prev = 0
|
prev = False
|
||||||
while True:
|
while True:
|
||||||
cur = len(self.__sockets)
|
cur = bool(self.__sockets)
|
||||||
if prev == 0 and cur > 0:
|
if not prev and cur:
|
||||||
await self.__streamer.ensure_start(init_restart=True)
|
await self.__streamer.ensure_start(init_restart=True)
|
||||||
elif prev > 0 and cur == 0:
|
elif prev and not cur:
|
||||||
await self.__streamer.ensure_stop(immediately=False)
|
await self.__streamer.ensure_stop(immediately=False)
|
||||||
|
|
||||||
if self.__reset_streamer or self.__new_streamer_params:
|
if self.__reset_streamer or self.__new_streamer_params:
|
||||||
|
|||||||
@@ -179,13 +179,9 @@ class Streamer: # pylint: disable=too-many-instance-attributes
|
|||||||
async def get_state(self) -> Dict:
|
async def get_state(self) -> Dict:
|
||||||
state = None
|
state = None
|
||||||
if self.__streamer_task:
|
if self.__streamer_task:
|
||||||
session = self.__ensure_session()
|
session = self.__ensure_http_session()
|
||||||
try:
|
try:
|
||||||
async with session.get(
|
async with session.get(self.__make_url("state")) as response:
|
||||||
url=f"http://{self.__host}:{self.__port}/state",
|
|
||||||
headers={"User-Agent": make_user_agent("KVMD")},
|
|
||||||
timeout=self.__timeout,
|
|
||||||
) as response:
|
|
||||||
aiotools.raise_not_200(response)
|
aiotools.raise_not_200(response)
|
||||||
state = (await response.json())["result"]
|
state = (await response.json())["result"]
|
||||||
except (aiohttp.ClientConnectionError, aiohttp.ServerConnectionError):
|
except (aiohttp.ClientConnectionError, aiohttp.ServerConnectionError):
|
||||||
@@ -246,14 +242,21 @@ class Streamer: # pylint: disable=too-many-instance-attributes
|
|||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
def __ensure_session(self) -> aiohttp.ClientSession:
|
def __ensure_http_session(self) -> aiohttp.ClientSession:
|
||||||
if not self.__http_session:
|
if not self.__http_session:
|
||||||
|
kwargs: Dict = {
|
||||||
|
"headers": {"User-Agent": make_user_agent("KVMD")},
|
||||||
|
"timeout": aiohttp.ClientTimeout(total=self.__timeout),
|
||||||
|
}
|
||||||
if self.__unix_path:
|
if self.__unix_path:
|
||||||
self.__http_session = aiohttp.ClientSession(connector=aiohttp.UnixConnector(path=self.__unix_path))
|
kwargs["connector"] = aiohttp.UnixConnector(path=self.__unix_path)
|
||||||
else:
|
self.__http_session = aiohttp.ClientSession(**kwargs)
|
||||||
self.__http_session = aiohttp.ClientSession()
|
|
||||||
return self.__http_session
|
return self.__http_session
|
||||||
|
|
||||||
|
def __make_url(self, handle: str) -> str:
|
||||||
|
assert not handle.startswith("/"), handle
|
||||||
|
return f"http://{self.__host}:{self.__port}/{handle}"
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
|
|
||||||
@aiotools.atomic
|
@aiotools.atomic
|
||||||
|
|||||||
Reference in New Issue
Block a user