Feature/streamed install prototype #27
+13
-10
@@ -13,22 +13,25 @@ product-ready.
|
|||||||
and hands fetched file details to `StreamInstallGame` instead of the normal
|
and hands fetched file details to `StreamInstallGame` instead of the normal
|
||||||
download command.
|
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`
|
The shared external `unrar` stream provider now runs `unrar lt` once for the
|
||||||
per file. Good for non-solid archives, bad for solid archives. Final shape
|
archive metadata and one sequential `unrar p` pass per archive for payload
|
||||||
should be a one-pass provider with real entry boundaries, likely via libunrar
|
bytes. It frames directories, file starts, file chunks, and file ends from
|
||||||
or a purpose-built wrapper.
|
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**
|
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
|
- non-solid: current one-pass streaming is fine
|
||||||
- solid: one sequential archive pass only
|
- solid: prove and enforce one sequential archive pass only
|
||||||
|
|
||||||
This is the big architectural fork we discussed, and the prototype’s
|
This is the big architectural fork we discussed: keep non-solid and solid
|
||||||
provider is the thing to swap.
|
archive handling explicit in the provider contract and scenario coverage.
|
||||||
|
|
||||||
4. **Decide the integrity model**
|
4. **Decide the integrity model**
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user