fix SuperClient

This commit is contained in:
anlicheng 2026-05-22 15:51:59 +08:00
parent b984f7e4e9
commit 4ce3547c7c

View File

@ -17,8 +17,6 @@ actor SDLSuperClient {
private var state: State = .idle
private let frameParser: SDLSuperFrameParser
private let queue = DispatchQueue(label: "com.sdl.SuperClient.queue") // 线
//
@ -29,9 +27,10 @@ actor SDLSuperClient {
private var readTask: Task<Void, Never>?
private let connection: NWConnection
private let maxBufferSize: Int
init(serverEndpoint: SDLConfiguration.ResolvedServerEndpoint, port: UInt16, maxBufferSize: Int = 2 * 1024 * 1024) {
self.frameParser = SDLSuperFrameParser(maxBufferSize: maxBufferSize)
self.maxBufferSize = maxBufferSize
let pairs = AsyncThrowingStream.makeStream(of: SDLQUICInboundMessage.self)
self.messageStream = pairs.stream
@ -117,11 +116,12 @@ actor SDLSuperClient {
self.readTask?.cancel()
self.readTask = Task {
let frameParser = SDLSuperFrameParser(maxBufferSize: self.maxBufferSize)
do {
while true {
try Task.checkCancellation()
let data = try await Self.readOnce(connection: self.connection)
let frames = try self.frameParser.parseFrames(data: data)
let frames = try frameParser.parseFrames(data: data)
for frame in frames {
try Task.checkCancellation()
if let message = SDLSuperCodec.decode(frame: frame) {