fix
This commit is contained in:
parent
60d1506b70
commit
cac931020c
@ -48,6 +48,8 @@ actor SDLContextActor {
|
|||||||
// 依赖的变量
|
// 依赖的变量
|
||||||
private var udpHole: SDLUDPHole?
|
private var udpHole: SDLUDPHole?
|
||||||
private var udpHoleWorkers: [Task<Void, Never>]?
|
private var udpHoleWorkers: [Task<Void, Never>]?
|
||||||
|
private var udpHoleV6: SDLUDPHoleV6?
|
||||||
|
private var udpHoleV6Workers: [Task<Void, Never>]?
|
||||||
|
|
||||||
// dns的client对象
|
// dns的client对象
|
||||||
private var dnsClient: DNSCloudClient?
|
private var dnsClient: DNSCloudClient?
|
||||||
@ -147,6 +149,13 @@ actor SDLContextActor {
|
|||||||
try await udpHole.waitClose()
|
try await udpHole.waitClose()
|
||||||
SDLLogger.log("[SDLContext] udp closed!!!!")
|
SDLLogger.log("[SDLContext] udp closed!!!!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await self.supervisor.addWorker(name: "udpHoleV6") {
|
||||||
|
let udpHoleV6 = try await self.startUDPHoleV6()
|
||||||
|
SDLLogger.log("[SDLContext] udpV6 running!!!!")
|
||||||
|
try await udpHoleV6.waitClose()
|
||||||
|
SDLLogger.log("[SDLContext] udpV6 closed!!!!")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func waitForReady() async throws {
|
public func waitForReady() async throws {
|
||||||
@ -363,6 +372,21 @@ actor SDLContextActor {
|
|||||||
return udpHole
|
return udpHole
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func startUDPHoleV6() async throws -> SDLUDPHoleV6 {
|
||||||
|
self.udpHoleV6Workers?.forEach {$0.cancel()}
|
||||||
|
self.udpHoleV6Workers = nil
|
||||||
|
|
||||||
|
// 启动udp ipv6服务器
|
||||||
|
let udpHoleV6 = try SDLUDPHoleV6()
|
||||||
|
let localAddress = try udpHoleV6.start()
|
||||||
|
SDLLogger.log("[SDLContext] udpHoleV6 started, on address: \(localAddress)")
|
||||||
|
|
||||||
|
self.udpHoleV6 = udpHoleV6
|
||||||
|
self.udpHoleV6Workers = []
|
||||||
|
|
||||||
|
return udpHoleV6
|
||||||
|
}
|
||||||
|
|
||||||
// 处理context的停止问题
|
// 处理context的停止问题
|
||||||
public func stop() async {
|
public func stop() async {
|
||||||
self.resumeReadyWaiters(.failure(CancellationError()))
|
self.resumeReadyWaiters(.failure(CancellationError()))
|
||||||
@ -377,6 +401,11 @@ actor SDLContextActor {
|
|||||||
self.udpHole?.stop()
|
self.udpHole?.stop()
|
||||||
self.udpHole = nil
|
self.udpHole = nil
|
||||||
|
|
||||||
|
self.udpHoleV6Workers?.forEach { $0.cancel() }
|
||||||
|
self.udpHoleV6Workers = nil
|
||||||
|
self.udpHoleV6?.stop()
|
||||||
|
self.udpHoleV6 = nil
|
||||||
|
|
||||||
self.quicWorker?.cancel()
|
self.quicWorker?.cancel()
|
||||||
self.quicWorker = nil
|
self.quicWorker = nil
|
||||||
self.quicClient?.stop()
|
self.quicClient?.stop()
|
||||||
@ -1007,6 +1036,7 @@ actor SDLContextActor {
|
|||||||
|
|
||||||
deinit {
|
deinit {
|
||||||
self.udpHole = nil
|
self.udpHole = nil
|
||||||
|
self.udpHoleV6 = nil
|
||||||
self.dnsClient = nil
|
self.dnsClient = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user