This commit is contained in:
anlicheng 2026-02-20 00:49:02 +08:00
parent c3e93466b1
commit e54f898c7d

View File

@ -116,13 +116,18 @@ actor SDLQUICReader {
func start() { func start() {
self.readTask = Task { self.readTask = Task {
var buffer: ByteBuffer = allocator.buffer(capacity: self.maxBufferSize) var buffer = allocator.buffer(capacity: self.maxBufferSize)
let threshold = self.maxBufferSize / 10 * 6
do { do {
while !Task.isCancelled { while !Task.isCancelled {
let (isComplete, data) = try await self.readOnce() let (isComplete, data) = try await self.readOnce()
if let data, !data.isEmpty { if let data, !data.isEmpty {
buffer.writeBytes(data) buffer.writeBytes(data)
let frames = try parseFrames(buffer: &buffer) let frames = try parseFrames(buffer: &buffer)
if buffer.readerIndex > threshold {
buffer.discardReadBytes()
}
for frame in frames { for frame in frames {
if let message = SDLQUICCodec.decode(frame: frame) { if let message = SDLQUICCodec.decode(frame: frame) {
self.messageCont.yield(message) self.messageCont.yield(message)
@ -167,10 +172,6 @@ actor SDLQUICReader {
} }
} }
if buffer.readerIndex > maxBufferSize / 10 * 6 {
buffer.discardReadBytes()
}
return frames return frames
} }