fix SuperClient
This commit is contained in:
parent
b984f7e4e9
commit
4ce3547c7c
@ -17,8 +17,6 @@ actor SDLSuperClient {
|
|||||||
|
|
||||||
private var state: State = .idle
|
private var state: State = .idle
|
||||||
|
|
||||||
private let frameParser: SDLSuperFrameParser
|
|
||||||
|
|
||||||
private let queue = DispatchQueue(label: "com.sdl.SuperClient.queue") // 专用队列保证线程安全
|
private let queue = DispatchQueue(label: "com.sdl.SuperClient.queue") // 专用队列保证线程安全
|
||||||
|
|
||||||
// 数据流
|
// 数据流
|
||||||
@ -29,9 +27,10 @@ actor SDLSuperClient {
|
|||||||
private var readTask: Task<Void, Never>?
|
private var readTask: Task<Void, Never>?
|
||||||
|
|
||||||
private let connection: NWConnection
|
private let connection: NWConnection
|
||||||
|
private let maxBufferSize: Int
|
||||||
|
|
||||||
init(serverEndpoint: SDLConfiguration.ResolvedServerEndpoint, port: UInt16, maxBufferSize: Int = 2 * 1024 * 1024) {
|
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)
|
let pairs = AsyncThrowingStream.makeStream(of: SDLQUICInboundMessage.self)
|
||||||
self.messageStream = pairs.stream
|
self.messageStream = pairs.stream
|
||||||
@ -117,11 +116,12 @@ actor SDLSuperClient {
|
|||||||
self.readTask?.cancel()
|
self.readTask?.cancel()
|
||||||
|
|
||||||
self.readTask = Task {
|
self.readTask = Task {
|
||||||
|
let frameParser = SDLSuperFrameParser(maxBufferSize: self.maxBufferSize)
|
||||||
do {
|
do {
|
||||||
while true {
|
while true {
|
||||||
try Task.checkCancellation()
|
try Task.checkCancellation()
|
||||||
let data = try await Self.readOnce(connection: self.connection)
|
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 {
|
for frame in frames {
|
||||||
try Task.checkCancellation()
|
try Task.checkCancellation()
|
||||||
if let message = SDLSuperCodec.decode(frame: frame) {
|
if let message = SDLSuperCodec.decode(frame: frame) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user