syntax fix

This commit is contained in:
Mike Renoir 2023-03-09 17:00:57 +04:00
parent 39fcea4a85
commit 589d9f7155

View File

@ -231,45 +231,52 @@ final class NetworkFrameworkTcpConnectionInterface: NSObject, MTTcpConnectionInt
self.processReadRequests() self.processReadRequests()
} else { } else {
connection.receive(minimumIncompleteLength: requestChunkLength, maximumLength: requestChunkLength, completion: { [weak self] data, context, isComplete, error in connection.receive(minimumIncompleteLength: requestChunkLength, maximumLength: requestChunkLength, completion: { [weak self] data, context, isComplete, error in
guard let self = self, let currentReadRequest = self.currentReadRequest else { self?.readWithBytes(data: data, isComplete: isComplete, error: error)
return
}
if let data = data {
self.networkUsageManager?.addIncomingBytes(UInt(data.count), interface: self.currentInterfaceIsWifi ? MTNetworkUsageManagerInterfaceOther : MTNetworkUsageManagerInterfaceWWAN)
if data.count != 0 && data.count <= currentReadRequest.request.length - currentReadRequest.readyLength {
currentReadRequest.data.withUnsafeMutableBytes { currentBuffer in
guard let currentBytes = currentBuffer.assumingMemoryBound(to: UInt8.self).baseAddress else {
return
}
data.copyBytes(to: currentBytes.advanced(by: currentReadRequest.readyLength), count: data.count)
}
currentReadRequest.readyLength += data.count
let tag = currentReadRequest.request.tag
let readCount = data.count
weak var delegate = self.delegate
self.delegateQueue.async {
if let delegate = delegate {
delegate.connectionInterfaceDidReadPartialData(ofLength: UInt(readCount), tag: tag)
}
}
self.processCurrentRead()
} else {
self.cancelWithError(error: error)
}
if isComplete && data.count == 0 {
self.cancelWithError(error: nil)
}
} else {
self.cancelWithError(error: error)
}
}) })
} }
} }
private func readWithBytes(data: Data?, isComplete: Bool, error: Error?) {
guard let currentReadRequest = self.currentReadRequest else {
return
}
if let data = data {
self.networkUsageManager?.addIncomingBytes(UInt(data.count), interface: self.currentInterfaceIsWifi ? MTNetworkUsageManagerInterfaceOther : MTNetworkUsageManagerInterfaceWWAN)
if data.count != 0 && data.count <= currentReadRequest.request.length - currentReadRequest.readyLength {
currentReadRequest.data.withUnsafeMutableBytes { currentBuffer in
guard let currentBytes = currentBuffer.baseAddress?.assumingMemoryBound(to: UInt8.self) else {
return
}
data.copyBytes(to: currentBytes.advanced(by: currentReadRequest.readyLength), count: data.count)
}
currentReadRequest.readyLength += data.count
let tag = currentReadRequest.request.tag
let readCount = data.count
weak var delegate = self.delegate
self.delegateQueue.async {
if let delegate = delegate {
delegate.connectionInterfaceDidReadPartialData(ofLength: UInt(readCount), tag: tag)
}
}
self.processCurrentRead()
} else {
self.cancelWithError(error: error)
}
if isComplete && data.count == 0 {
self.cancelWithError(error: nil)
}
} else {
self.cancelWithError(error: error)
}
}
private func cancelWithError(error: Error?) { private func cancelWithError(error: Error?) {
if let connectTimeoutTimer = self.connectTimeoutTimer { if let connectTimeoutTimer = self.connectTimeoutTimer {
self.connectTimeoutTimer = nil self.connectTimeoutTimer = nil