调整变量的ARC
This commit is contained in:
parent
0a7c8eca85
commit
f9fa7bf73e
@ -165,7 +165,9 @@ actor SDLContextActor {
|
|||||||
await quicClient.start()
|
await quicClient.start()
|
||||||
|
|
||||||
defer {
|
defer {
|
||||||
|
if self.quicClient === quicClient {
|
||||||
self.quicClient = nil
|
self.quicClient = nil
|
||||||
|
}
|
||||||
SDLLogger.log("[SDLContext] startSuperClient defer")
|
SDLLogger.log("[SDLContext] startSuperClient defer")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,8 +494,11 @@ actor SDLContextActor {
|
|||||||
self.dnsMonitorTask?.cancel()
|
self.dnsMonitorTask?.cancel()
|
||||||
self.dnsLocalMonitorTask?.cancel()
|
self.dnsLocalMonitorTask?.cancel()
|
||||||
|
|
||||||
|
let quicClient = self.quicClient
|
||||||
|
self.quicClient = nil
|
||||||
self.superMonitorTask?.cancel()
|
self.superMonitorTask?.cancel()
|
||||||
self.udpHoleMonitorTask?.cancel()
|
self.superMonitorTask = nil
|
||||||
|
await quicClient?.stop()
|
||||||
|
|
||||||
self.readTask?.cancel()
|
self.readTask?.cancel()
|
||||||
self.readTask = nil
|
self.readTask = nil
|
||||||
|
|||||||
@ -44,7 +44,6 @@ actor SDLQUICClient {
|
|||||||
private var readTask: Task<Void, Never>?
|
private var readTask: Task<Void, Never>?
|
||||||
|
|
||||||
private var connection: NWConnection?
|
private var connection: NWConnection?
|
||||||
private let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 专用队列保证线程安全
|
|
||||||
|
|
||||||
private let host: String
|
private let host: String
|
||||||
private let port: UInt16
|
private let port: UInt16
|
||||||
@ -58,6 +57,9 @@ actor SDLQUICClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func start() {
|
func start() {
|
||||||
|
let host = self.host
|
||||||
|
let queue = DispatchQueue(label: "com.sdl.QUICClient.queue") // 专用队列保证线程安全
|
||||||
|
|
||||||
let options = NWProtocolTLS.Options()
|
let options = NWProtocolTLS.Options()
|
||||||
sec_protocol_options_add_tls_application_protocol(
|
sec_protocol_options_add_tls_application_protocol(
|
||||||
options.securityProtocolOptions,
|
options.securityProtocolOptions,
|
||||||
@ -67,11 +69,11 @@ actor SDLQUICClient {
|
|||||||
// 这里设置证书的校验逻辑
|
// 这里设置证书的校验逻辑
|
||||||
sec_protocol_options_set_verify_block(
|
sec_protocol_options_set_verify_block(
|
||||||
options.securityProtocolOptions,
|
options.securityProtocolOptions,
|
||||||
{ metadata, trust, complete in
|
{ _, trust, complete in
|
||||||
// 执行公钥校验
|
// 执行公钥校验
|
||||||
complete(TLSVerifier.verify(trust: trust, host: self.host))
|
complete(TLSVerifier.verify(trust: trust, host: host))
|
||||||
},
|
},
|
||||||
self.queue
|
queue
|
||||||
)
|
)
|
||||||
SDLLogger.log("[SDLQUICClient] start with tls protocol", for: .debug)
|
SDLLogger.log("[SDLQUICClient] start with tls protocol", for: .debug)
|
||||||
|
|
||||||
@ -87,7 +89,7 @@ actor SDLQUICClient {
|
|||||||
await self?.handleConnectionState(state: state)
|
await self?.handleConnectionState(state: state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
connection.start(queue: self.queue)
|
connection.start(queue: queue)
|
||||||
|
|
||||||
self.connection = connection
|
self.connection = connection
|
||||||
}
|
}
|
||||||
@ -190,7 +192,13 @@ actor SDLQUICClient {
|
|||||||
self.state = .stopped
|
self.state = .stopped
|
||||||
|
|
||||||
self.readTask?.cancel()
|
self.readTask?.cancel()
|
||||||
self.connection?.cancel()
|
self.readTask = nil
|
||||||
|
|
||||||
|
let connection = self.connection
|
||||||
|
self.connection = nil
|
||||||
|
connection?.stateUpdateHandler = nil
|
||||||
|
connection?.cancel()
|
||||||
|
|
||||||
self.finishMessageContinuationIfNeed(throwing: nil)
|
self.finishMessageContinuationIfNeed(throwing: nil)
|
||||||
|
|
||||||
SDLLogger.log("[SDLQUICClient] stopped")
|
SDLLogger.log("[SDLQUICClient] stopped")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user