Files
BiLauncher/doc/cpp/SeasonalPackDownloader.md
2026-10-11 22:32:13 +03:00

33 lines
2.1 KiB
Markdown

# SeasonalPackDownloader
`seasonalpackdownloader.h`, `seasonalpackdownloader.cpp`
Качает один архив сезонной сборки в файл и проверяет sha256. Пак весит сотни мегабайт, поэтому
пишется потоком через `QSaveFile`, а не собирается в памяти. Битый архив распаковывать поверх
рабочей `.minecraft` нельзя, поэтому файл появляется на диске только после совпадения хеша.
Распаковывает пак [BuildSwitcher](BuildSwitcher.md). Экземпляр держит
[LauncherBackend](LauncherBackend.md), который и вызывает загрузку на шаге Downloading установки
сезонной сборки.
## download(url, targetPath, sha256, expectedSize, label)
- `targetPath` — `<root>/builds/<id>/.pack-r<ревизия>.zip`. Если файл уже есть, он будет
перезаписан: недокачанный пак с прошлой попытки не должен дожить до новой.
- `expectedSize` из каталога используется для прогресса, пока сервер не сообщил настоящий размер.
- Таймаут — 60 секунд без данных. Повторных попыток нет: если загрузка оборвалась, установку
нужно начать заново.
Если загрузка уже идёт, сразу приходит `failed`.
Сигналы: `started(label)`, `progressChanged()` (не чаще раза в 100 мс), `finished(path)`,
`failed(label, message)`, `canceled(label)`. Геттеры прогресса такие же, как у других
установщиков.
При ошибке и несовпадении хеша файл удаляется. `cancel()` обрывает запрос, и `canceled` приходит
после его завершения.
---
При создании этого документа использовался ИИ.