This commit is contained in:
anlicheng 2026-01-08 11:58:03 +08:00
parent f6288ee07d
commit 40ecb14faf

View File

@ -34,7 +34,7 @@ actor SDLSuperClientActor {
case command(UInt32, SDLCommand) case command(UInt32, SDLCommand)
} }
enum SDLSuperClientError: Error { enum SuperClientError: Error {
case timeout case timeout
case connectionClosed case connectionClosed
case cancelled case cancelled
@ -133,6 +133,9 @@ actor SDLSuperClientActor {
self.inboundContinuation.finish() self.inboundContinuation.finish()
self.writeContinuation.finish() self.writeContinuation.finish()
self.logger.log("[SDLSuperClient] withTaskCancellationHandler cancel") self.logger.log("[SDLSuperClient] withTaskCancellationHandler cancel")
Task {
await self.failAllContinuations(SuperClientError.cancelled)
}
} }
} }
@ -170,11 +173,20 @@ actor SDLSuperClientActor {
cont.resume(returning: message) cont.resume(returning: message)
} }
private func failAllContinuations(_ error: Error) {
let all = continuations
continuations.removeAll()
for (_, cont) in all {
cont.resume(throwing: error)
}
}
private func timeout(packetId: UInt32) { private func timeout(packetId: UInt32) {
guard let cont = self.continuations.removeValue(forKey: packetId) else { guard let cont = self.continuations.removeValue(forKey: packetId) else {
return return
} }
cont.resume(throwing: SDLSuperClientError.timeout) cont.resume(throwing: SuperClientError.timeout)
} }
deinit { deinit {