From 137c855764638ef71f7044508fadc71d4b02b3b6 Mon Sep 17 00:00:00 2001 From: honglei Date: Tue, 4 Jul 2023 16:52:01 +0800 Subject: [PATCH] MessageBus.add_message_handler:Support coroutine functions in callbacks. --- dbus_next/message_bus.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/dbus_next/message_bus.py b/dbus_next/message_bus.py index 8bb830d..39ed85d 100644 --- a/dbus_next/message_bus.py +++ b/dbus_next/message_bus.py @@ -14,8 +14,8 @@ import logging import xml.etree.ElementTree as ET import traceback - -from typing import Type, Callable, Optional, Union +import asyncio +from typing import Type, Callable, Optional, Union, Coroutine class BaseMessageBus: @@ -665,8 +665,10 @@ def _process_message(self, msg): for handler in self._user_message_handlers: try: - result = handler(msg) - if result: + result = handler(msg) + if isinstance(result, Coroutine): + asyncio.create_task(result) + elif result: if type(result) is Message: self.send(result) handled = True