Make all event emitters async

* Also remove AbortableEventEmitter
This commit is contained in:
Josh Wu
2025-04-12 22:53:32 +08:00
parent 6cecc16519
commit 55801bc2ca
32 changed files with 432 additions and 395 deletions

View File

@@ -20,6 +20,7 @@ import grpc.aio
import logging
import struct
import bumble.utils
from bumble.pandora import utils
from bumble.pandora.config import Config
from bumble.core import (
@@ -534,7 +535,9 @@ class HostService(HostServicer):
try:
self.log.debug('Stop advertising')
await self.device.abort_on('flush', self.device.stop_advertising())
await bumble.utils.cancel_on_event(
self.device, 'flush', self.device.stop_advertising()
)
except:
pass
@@ -602,7 +605,9 @@ class HostService(HostServicer):
self.device.remove_listener('advertisement', handler) # type: ignore
try:
self.log.debug('Stop scanning')
await self.device.abort_on('flush', self.device.stop_scanning())
await bumble.utils.cancel_on_event(
self.device, 'flush', self.device.stop_scanning()
)
except:
pass
@@ -642,7 +647,9 @@ class HostService(HostServicer):
self.device.remove_listener('inquiry_result', result_handler) # type: ignore
try:
self.log.debug('Stop inquiry')
await self.device.abort_on('flush', self.device.stop_discovery())
await bumble.utils.cancel_on_event(
self.device, 'flush', self.device.stop_discovery()
)
except:
pass

View File

@@ -25,9 +25,9 @@ from bumble.core import (
PhysicalTransport,
ProtocolError,
)
import bumble.utils
from bumble.device import Connection as BumbleConnection, Device
from bumble.hci import HCI_Error, Role
from bumble.utils import EventWatcher
from bumble.pairing import PairingConfig, PairingDelegate as BasePairingDelegate
from google.protobuf import any_pb2 # pytype: disable=pyi-error
from google.protobuf import empty_pb2 # pytype: disable=pyi-error
@@ -300,7 +300,7 @@ class SecurityService(SecurityServicer):
security_result = asyncio.get_running_loop().create_future()
with contextlib.closing(EventWatcher()) as watcher:
with contextlib.closing(bumble.utils.EventWatcher()) as watcher:
@watcher.on(connection, 'pairing')
def on_pairing(*_: Any) -> None:
@@ -449,7 +449,7 @@ class SecurityService(SecurityServicer):
'security_request': pair,
}
with contextlib.closing(EventWatcher()) as watcher:
with contextlib.closing(bumble.utils.EventWatcher()) as watcher:
# register event handlers
for event, listener in listeners.items():
watcher.on(connection, event, listener)