Feature/streamed install prototype #27
+13
-10
@@ -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 prototype’s
|
||||
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**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user