mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-05 05:51:42 +00:00
Fetch improvements
This commit is contained in:
parent
03ae2197ac
commit
f92f4c38c6
@ -360,13 +360,17 @@ final class MediaBoxFileContextV2Impl: MediaBoxFileContext {
|
||||
if complete {
|
||||
if let maxOffset = self.fileMap.ranges.ranges.reversed().first?.upperBound {
|
||||
let maxValue = max(resourceOffset + Int64(dataRange.count), Int64(maxOffset))
|
||||
self.fileMap.truncate(maxValue)
|
||||
self.fileMap.serialize(manager: self.manager, to: self.metaPath)
|
||||
if self.fileMap.truncationSize != maxValue {
|
||||
self.fileMap.truncate(maxValue)
|
||||
self.fileMap.serialize(manager: self.manager, to: self.metaPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
case let .resourceSizeUpdated(size):
|
||||
self.fileMap.truncate(size)
|
||||
self.fileMap.serialize(manager: self.manager, to: self.metaPath)
|
||||
if self.fileMap.truncationSize != size {
|
||||
self.fileMap.truncate(size)
|
||||
self.fileMap.serialize(manager: self.manager, to: self.metaPath)
|
||||
}
|
||||
case let .progressUpdated(progress):
|
||||
let _ = progress
|
||||
case let .replaceHeader(data, range):
|
||||
|
||||
@ -208,6 +208,7 @@ private final class FetchImpl {
|
||||
private let consumerId: Int64
|
||||
|
||||
private var knownSize: Int64?
|
||||
private var didReportKnownSize: Bool = false
|
||||
private var updatedFileReference: Data?
|
||||
|
||||
private var requiredRangesDisposable: Disposable?
|
||||
@ -307,6 +308,11 @@ private final class FetchImpl {
|
||||
|
||||
switch state {
|
||||
case let .fetching(state):
|
||||
if let knownSize = self.knownSize, !self.didReportKnownSize {
|
||||
self.didReportKnownSize = true
|
||||
self.onNext(.resourceSizeUpdated(knownSize))
|
||||
}
|
||||
|
||||
var filteredRequiredRanges: [RangeSet<Int64>] = []
|
||||
for _ in 0 ..< 3 {
|
||||
filteredRequiredRanges.append(RangeSet<Int64>())
|
||||
@ -349,8 +355,32 @@ private final class FetchImpl {
|
||||
}*/
|
||||
|
||||
if state.pendingParts.count < state.maxPendingParts {
|
||||
//let debugRanges = filteredRequiredRanges.ranges.map { "\($0.lowerBound)..<\($0.upperBound)" }
|
||||
//Logger.shared.log("FetchV2", "\(self.loggingIdentifier): will fetch \(debugRanges)")
|
||||
var debugRangesString = ""
|
||||
for priorityIndex in 0 ..< 3 {
|
||||
if filteredRequiredRanges[priorityIndex].isEmpty {
|
||||
continue
|
||||
}
|
||||
|
||||
if !debugRangesString.isEmpty {
|
||||
debugRangesString.append(", ")
|
||||
}
|
||||
debugRangesString.append("priority: \(priorityIndex): [")
|
||||
|
||||
var isFirst = true
|
||||
for range in filteredRequiredRanges[priorityIndex].ranges {
|
||||
if isFirst {
|
||||
isFirst = false
|
||||
} else {
|
||||
debugRangesString.append(", ")
|
||||
}
|
||||
debugRangesString.append("\(range.lowerBound)..<\(range.upperBound)")
|
||||
}
|
||||
debugRangesString.append("]")
|
||||
}
|
||||
|
||||
if !debugRangesString.isEmpty {
|
||||
Logger.shared.log("FetchV2", "\(self.loggingIdentifier): will fetch \(debugRangesString)")
|
||||
}
|
||||
|
||||
while state.pendingParts.count < state.maxPendingParts {
|
||||
var found = false
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user