tesmart rewrite

This commit is contained in:
Devaev Maxim
2021-05-16 05:57:08 +03:00
parent 1fc8434f0a
commit 8db0ab20e0
11 changed files with 109 additions and 83 deletions

View File

@@ -295,7 +295,7 @@ class UserGpio:
async def cleanup(self) -> None:
for driver in self.__drivers.values():
try:
driver.cleanup()
await driver.cleanup()
except Exception:
get_logger().exception("Can't cleanup driver %s", driver)

View File

@@ -27,6 +27,8 @@ import struct
from typing import Tuple
from typing import Any
from .... import aiotools
from .errors import RfbConnectionError
@@ -35,18 +37,6 @@ def rfb_format_remote(writer: asyncio.StreamWriter) -> str:
return "[%s]:%d" % (writer.transport.get_extra_info("peername")[:2])
async def rfb_close_writer(writer: asyncio.StreamWriter) -> bool:
closing = writer.is_closing()
if not closing:
writer.transport.abort() # type: ignore
writer.close()
try:
await writer.wait_closed()
except Exception:
pass
return (not closing)
class RfbClientStream:
def __init__(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
self.__reader = reader
@@ -145,4 +135,4 @@ class RfbClientStream:
self.__writer = ssl_writer
async def _close(self) -> None:
await rfb_close_writer(self.__writer)
await aiotools.close_writer(self.__writer)

View File

@@ -55,7 +55,6 @@ from ... import aiotools
from .rfb import RfbClient
from .rfb.stream import rfb_format_remote
from .rfb.stream import rfb_close_writer
from .rfb.errors import RfbError
from .vncauth import VncAuthKvmdCredentials
@@ -487,7 +486,7 @@ class VncServer: # pylint: disable=too-many-instance-attributes
except Exception:
logger.exception("[entry] %s: Unhandled exception in client task", remote)
finally:
if (await rfb_close_writer(writer)):
if (await aiotools.close_writer(writer)):
logger.info("[entry] %s: Connection is closed in an emergency", remote)
self.__handle_client = handle_client