fix context

This commit is contained in:
anlicheng 2025-08-20 16:28:00 +08:00
parent de79811623
commit 075010703a

View File

@ -113,6 +113,7 @@ public class SDLContext: @unchecked Sendable {
try await self.startUDPHole() try await self.startUDPHole()
} catch let err { } catch let err {
self.logger.log("[SDLContext] UDPHole get err: \(err)", level: .warning) self.logger.log("[SDLContext] UDPHole get err: \(err)", level: .warning)
try await Task.sleep(for: .seconds(2))
} }
} }
} }
@ -139,6 +140,7 @@ public class SDLContext: @unchecked Sendable {
try await self.startNoticeClient() try await self.startNoticeClient()
} catch let err { } catch let err {
self.logger.log("[SDLContext] noticeClient get err: \(err)", level: .warning) self.logger.log("[SDLContext] noticeClient get err: \(err)", level: .warning)
try await Task.sleep(for: .seconds(2))
} }
} }
} }
@ -168,6 +170,10 @@ public class SDLContext: @unchecked Sendable {
private func startUDPHole() async throws { private func startUDPHole() async throws {
self.udpHole = try await SDLUDPHole(logger: self.logger) self.udpHole = try await SDLUDPHole(logger: self.logger)
try await withThrowingTaskGroup(of: Void.self) { group in try await withThrowingTaskGroup(of: Void.self) { group in
defer {
self.logger.log("[SDLContext] udp_hole task cancel", level: .warning)
}
group.addTask { group.addTask {
try await self.udpHole?.start() try await self.udpHole?.start()
} }
@ -187,7 +193,6 @@ public class SDLContext: @unchecked Sendable {
} }
} }
try await group.waitForAll() try await group.waitForAll()
self.logger.log("[SDLContext] udp_hole task cancel", level: .warning)
} }
} }
@ -195,6 +200,10 @@ public class SDLContext: @unchecked Sendable {
private func startSuperClient() async throws { private func startSuperClient() async throws {
self.superClient = try await SDLSuperClient(host: self.config.superHost, port: self.config.superPort, logger: self.logger) self.superClient = try await SDLSuperClient(host: self.config.superHost, port: self.config.superPort, logger: self.logger)
try await withThrowingTaskGroup(of: Void.self) { group in try await withThrowingTaskGroup(of: Void.self) { group in
defer {
self.logger.log("[SDLContext] super client task cancel", level: .warning)
}
group.addTask { group.addTask {
try await self.superClient?.start() try await self.superClient?.start()
} }
@ -207,7 +216,6 @@ public class SDLContext: @unchecked Sendable {
} }
} }
try await group.waitForAll() try await group.waitForAll()
self.logger.log("[SDLContext] super client task cancel", level: .warning)
} }
} }
@ -467,10 +475,6 @@ public class SDLContext: @unchecked Sendable {
// //
self.readTask = Task(priority: .high) { self.readTask = Task(priority: .high) {
repeat { repeat {
if Task.isCancelled {
break
}
let (packets, numbers) = await self.provider.packetFlow.readPackets() let (packets, numbers) = await self.provider.packetFlow.readPackets()
for (data, number) in zip(packets, numbers) where number == 2 { for (data, number) in zip(packets, numbers) where number == 2 {
if let packet = IPPacket(data) { if let packet = IPPacket(data) {