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