rename Response to RangeResponse; fix lastUsed increment in header cache

This commit is contained in:
Brandon Liu
2022-10-04 10:57:32 +08:00
parent 2a805b0f40
commit 93ff392e6f
2 changed files with 9 additions and 8 deletions

View File

@@ -14,7 +14,7 @@ import {
Cache, Cache,
BufferPosition, BufferPosition,
Source, Source,
SourceData, RangeResponse,
VersionMismatch, VersionMismatch,
PMTiles, PMTiles,
} from "./v3"; } from "./v3";
@@ -135,7 +135,7 @@ class TestNodeFileSource implements Source {
async getBytes( async getBytes(
offset: number, offset: number,
length: number length: number
): Promise<SourceData> { ): Promise<RangeResponse> {
const slice = new Uint8Array(this.buffer.slice(offset, offset + length)) const slice = new Uint8Array(this.buffer.slice(offset, offset + length))
.buffer; .buffer;
return {data:slice, etag:this.etag}; return {data:slice, etag:this.etag};

View File

@@ -213,7 +213,7 @@ export function findTile(entries: Entry[], tileId: number): Entry | null {
return null; return null;
} }
export interface SourceData { export interface RangeResponse {
data: ArrayBuffer; data: ArrayBuffer;
etag?: string; etag?: string;
expires?: string; expires?: string;
@@ -227,7 +227,7 @@ export interface Source {
offset: number, offset: number,
length: number, length: number,
signal?: AbortSignal signal?: AbortSignal
) => Promise<SourceData>; ) => Promise<RangeResponse>;
getKey: () => string; getKey: () => string;
} }
@@ -243,7 +243,7 @@ export class FileAPISource implements Source {
return this.file.name; return this.file.name;
} }
async getBytes(offset: number, length: number): Promise<SourceData> { async getBytes(offset: number, length: number): Promise<RangeResponse> {
const blob = this.file.slice(offset, offset + length); const blob = this.file.slice(offset, offset + length);
const a = await blob.arrayBuffer(); const a = await blob.arrayBuffer();
return { data: a }; return { data: a };
@@ -265,7 +265,7 @@ export class FetchSource implements Source {
offset: number, offset: number,
length: number, length: number,
signal?: AbortSignal signal?: AbortSignal
): Promise<SourceData> { ): Promise<RangeResponse> {
let controller; let controller;
if (!signal) { if (!signal) {
// TODO check this works or assert 206 // TODO check this works or assert 206
@@ -392,6 +392,7 @@ export class Cache {
async getHeader(source: Source): Promise<Header> { async getHeader(source: Source): Promise<Header> {
const cacheKey = source.getKey(); const cacheKey = source.getKey();
if (this.cache.has(cacheKey)) { if (this.cache.has(cacheKey)) {
this.cache.get(cacheKey)!.lastUsed = this.counter++;
const data = await this.cache.get(cacheKey)!.data; const data = await this.cache.get(cacheKey)!.data;
return data as Header; return data as Header;
} }
@@ -545,7 +546,7 @@ export class PMTiles {
x: number, x: number,
y: number, y: number,
signal?: AbortSignal signal?: AbortSignal
): Promise<SourceData | undefined> { ): Promise<RangeResponse | undefined> {
const tile_id = zxyToTileId(z, x, y); const tile_id = zxyToTileId(z, x, y);
const header = await this.cache.getHeader(this.source); const header = await this.cache.getHeader(this.source);
@@ -594,7 +595,7 @@ export class PMTiles {
x: number, x: number,
y: number, y: number,
signal?: AbortSignal signal?: AbortSignal
): Promise<SourceData | undefined> { ): Promise<RangeResponse | undefined> {
try { try {
return await this.getZxyAttempt(z, x, y, signal); return await this.getZxyAttempt(z, x, y, signal);
} catch (e) { } catch (e) {