mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
pikvm/kvmd#182: improved dbus_next fix
This commit is contained in:
parent
5045d8b3d7
commit
fb9d860cf2
@ -35,6 +35,7 @@ class SystemdUnitInfo:
|
|||||||
self.__bus: (dbus_next.aio.MessageBus | None) = None
|
self.__bus: (dbus_next.aio.MessageBus | None) = None
|
||||||
self.__intr: (dbus_next.introspection.Node | None) = None
|
self.__intr: (dbus_next.introspection.Node | None) = None
|
||||||
self.__manager: (dbus_next.aio.proxy_object.ProxyInterface | None) = None
|
self.__manager: (dbus_next.aio.proxy_object.ProxyInterface | None) = None
|
||||||
|
self.__requested = False
|
||||||
|
|
||||||
async def get_status(self, name: str) -> tuple[bool, bool]:
|
async def get_status(self, name: str) -> tuple[bool, bool]:
|
||||||
assert self.__bus is not None
|
assert self.__bus is not None
|
||||||
@ -49,6 +50,7 @@ class SystemdUnitInfo:
|
|||||||
unit = self.__bus.get_proxy_object("org.freedesktop.systemd1", unit_p, self.__intr)
|
unit = self.__bus.get_proxy_object("org.freedesktop.systemd1", unit_p, self.__intr)
|
||||||
unit_props = unit.get_interface("org.freedesktop.DBus.Properties")
|
unit_props = unit.get_interface("org.freedesktop.DBus.Properties")
|
||||||
started = ((await unit_props.call_get("org.freedesktop.systemd1.Unit", "ActiveState")).value == "active") # type: ignore
|
started = ((await unit_props.call_get("org.freedesktop.systemd1.Unit", "ActiveState")).value == "active") # type: ignore
|
||||||
|
self.__requested = True
|
||||||
except dbus_next.errors.DBusError as err:
|
except dbus_next.errors.DBusError as err:
|
||||||
if err.type != "org.freedesktop.systemd1.NoSuchUnit":
|
if err.type != "org.freedesktop.systemd1.NoSuchUnit":
|
||||||
raise
|
raise
|
||||||
@ -76,11 +78,12 @@ class SystemdUnitInfo:
|
|||||||
try:
|
try:
|
||||||
if self.__bus is not None:
|
if self.__bus is not None:
|
||||||
try:
|
try:
|
||||||
await self.__manager.call_get_default_target()
|
# XXX: Workaround for dbus_next bug: https://github.com/pikvm/kvmd/pull/182
|
||||||
except:
|
if not self.__requested:
|
||||||
pass
|
await self.__manager.call_get_default_target() # type: ignore
|
||||||
self.__bus.disconnect()
|
finally:
|
||||||
await self.__bus.wait_for_disconnect()
|
self.__bus.disconnect()
|
||||||
|
await self.__bus.wait_for_disconnect()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
self.__manager = None
|
self.__manager = None
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user