Feature/streamed install prototype #27

Merged
ddidderr merged 15 commits from feature/streamed-install-prototype into main 2026-06-11 08:52:33 +02:00
Showing only changes of commit c313f7c9ae - Show all commits
+13 -10
View File
@@ -13,22 +13,25 @@ product-ready.
and hands fetched file details to `StreamInstallGame` instead of the normal
download command.
2. **Replace per-file `unrar p` with a final archive provider**
2. **Done — Replace per-file `unrar p` with a final archive provider**
The prototype provider is intentionally simple: `unrar lt`, then `unrar p`
per file. Good for non-solid archives, bad for solid archives. Final shape
should be a one-pass provider with real entry boundaries, likely via libunrar
or a purpose-built wrapper.
The shared external `unrar` stream provider now runs `unrar lt` once for the
archive metadata and one sequential `unrar p` pass per archive for payload
bytes. It frames directories, file starts, file chunks, and file ends from
the technical listing, so CLI and GUI callers use one purpose-built provider
instead of a per-file extraction loop.
3. **Handle solid archives deliberately**
Add archive inspection that decides:
The provider exposes the RAR `solid` flag in `ArchiveBegin`; the remaining
work is to make that flag a tested policy decision instead of an incidental
stream attribute. Add archive inspection that decides:
- non-solid: per-file streaming is fine
- solid: one sequential archive pass only
- non-solid: current one-pass streaming is fine
- solid: prove and enforce one sequential archive pass only
This is the big architectural fork we discussed, and the prototypes
provider is the thing to swap.
This is the big architectural fork we discussed: keep non-solid and solid
archive handling explicit in the provider contract and scenario coverage.
4. **Decide the integrity model**