解决网络状态变化的问题

This commit is contained in:
anlicheng 2026-04-29 17:27:06 +08:00
parent 971fa64685
commit 9a3fb6a8d6
2 changed files with 1 additions and 33 deletions

View File

@ -39,17 +39,7 @@ class PacketTunnelProvider: NEPacketTunnelProvider {
self.contextActor = contextActor
await contextActor.start()
//
for await event in await contextActor.events() {
switch event {
case .ready:
completionHandler(nil)
case .failed(let err):
await self.contextActor?.stop()
self.contextActor = nil
completionHandler(err)
}
}
completionHandler(nil)
}
}

View File

@ -9,11 +9,6 @@ import Foundation
import NetworkExtension
import NIOCore
public enum SDLContextEvent: Sendable {
case ready
case failed(Error)
}
//
/*
1. rsa的加解密逻辑
@ -41,10 +36,6 @@ actor SDLContextActor {
}
}
//
private let eventStream: AsyncStream<SDLContextEvent>
private let eventContinuation: AsyncStream<SDLContextEvent>.Continuation
private var readyState: ReadyState = .idle
var config: SDLConfiguration
@ -129,11 +120,6 @@ actor SDLContextActor {
self.config = config
self.rsaCipher = rsaCipher
//
let pair = AsyncStream<SDLContextEvent>.makeStream(bufferingPolicy: .bufferingNewest(32))
self.eventStream = pair.stream
self.eventContinuation = pair.continuation
self.puncherActor = SDLPuncherActor()
self.proberActor = SDLNATProberActor(addressArray: config.stunProbeSocketAddressArray)
@ -154,10 +140,6 @@ actor SDLContextActor {
await self.startRuntime(resetNotifier: true)
}
public func events() -> AsyncStream<SDLContextEvent> {
return eventStream
}
private func startRuntime(resetNotifier: Bool) async {
if resetNotifier {
self.prepareTunnelNotifier()
@ -791,14 +773,10 @@ extension SDLContextActor {
SDLLogger.log("[SDLContext] setNetworkSettings successed")
self.superRegistrationStateMachine.handleRegisterSuperAck()
self.startReader()
self.eventContinuation.yield(.ready)
self.eventContinuation.finish()
} catch let err {
self.superRegistrationStateMachine.handleFailure()
SDLLogger.log("[SDLContext] setTunnelNetworkSettings get error: \(err)")
self.provider.cancelTunnelWithError(err)
self.eventContinuation.yield(.failed(err))
self.eventContinuation.finish()
}
}