Skip to content

Commit a574c22

Browse files
committed
cache2: support sized flag
1 parent 9792e65 commit a574c22

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

cache2-ts/src/Cache.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ export class ArchiveData {
4747
public namehash!: number;
4848
public revision!: number;
4949
public crc!: number;
50+
public decompressedSize?: number;
51+
public compressedSize?: number;
5052

5153
/**@internal*/ files: Map<number, ArchiveFile> = new Map();
5254

cache2-ts/src/DiskCache.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export class DiskIndexData implements IndexData {
88
public compression!: number;
99
public crc!: number;
1010
public named!: boolean;
11+
public sized!: boolean;
1112
/** @internal */ archives: Map<number, ArchiveData> = new Map();
1213
}
1314

@@ -43,6 +44,11 @@ export class DiskCacheProvider implements CacheProvider {
4344

4445
let flags = r.u8();
4546
let named = out.named = !!(flags & 1);
47+
let sized = out.sized = !!(flags & 4);
48+
49+
if (flags & ~(1 | 4)) {
50+
throw new Error(`unsupported flags ${flags.toString(16)}`);
51+
}
4652

4753
let numArchives = protocol <= 6 ? r.u16() : r.u32o16();
4854
let ams: ArchiveData[] = new Array(numArchives);
@@ -61,6 +67,12 @@ export class DiskCacheProvider implements CacheProvider {
6167
for (let am of ams) {
6268
am.crc = r.i32();
6369
}
70+
if (sized) {
71+
for (let am of ams) {
72+
am.compressedSize = r.i32();
73+
am.decompressedSize = r.i32();
74+
}
75+
}
6476
for (let am of ams) {
6577
am.revision = r.i32();
6678
}

0 commit comments

Comments
 (0)