Deliver live transport events synchronously

This commit is contained in:
jack
2026-07-25 20:41:13 +02:00
parent 5ca9c41a30
commit 17113e6fc8
8 changed files with 405 additions and 75 deletions
+27 -3
View File
@@ -4251,16 +4251,40 @@ extension BLEService {
private func emitTransportEvent(_ event: TransportEvent) {
notifyUI { [weak self] in
self?.deliverTransportEvent(event)
_ = self?.deliverTransportEvent(event)
}
}
@MainActor
private func deliverTransportEvent(_ event: TransportEvent) {
@discardableResult
private func deliverTransportEvent(_ event: TransportEvent) -> Bool {
if case .messageReceived(let message) = event {
if let synchronousDelegate =
eventDelegate as? SynchronousMessageTransportEventDelegate {
return synchronousDelegate
.didReceiveTransportMessageSynchronously(message)
}
if let eventDelegate {
eventDelegate.didReceiveTransportEvent(event)
return false
}
if let synchronousDelegate =
delegate as? SynchronousMessageTransportEventDelegate {
return synchronousDelegate
.didReceiveTransportMessageSynchronously(message)
}
}
if let eventDelegate {
eventDelegate.didReceiveTransportEvent(event)
return true
} else {
delegate?.receiveTransportEvent(event)
guard let delegate else { return false }
delegate.receiveTransportEvent(event)
if case .messageReceived = event {
return false
}
return true
}
}