From 7d7b92678b0741bab0917ab6f51d596d13a78452 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Wed, 22 Jan 2025 23:10:42 -0600 Subject: [PATCH] reuse fixed size DataViews --- src/encoders/chunk.ts | 2 +- src/encoders/data/data-tracker-timestamp-chunk.ts | 2 +- src/encoders/packet-header-chunk.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/encoders/chunk.ts b/src/encoders/chunk.ts index bddec09..252cd60 100644 --- a/src/encoders/chunk.ts +++ b/src/encoders/chunk.ts @@ -1,3 +1,4 @@ +const header = new DataView(new ArrayBuffer(4)); export default (id: number, chunkData: Uint8Array, hasSubchunks: boolean): Uint8Array => { if (!Number.isInteger(id)) { throw new Error('chunk id must be an integer'); @@ -11,7 +12,6 @@ export default (id: number, chunkData: Uint8Array, hasSubchunks: boolean): Uint8 throw new Error('chunkData can not be greater than 32767 bytes'); } - const header = new DataView(new ArrayBuffer(4)); header.setUint16(0, id, true); const hasSubChunksBit = (hasSubchunks ? 1 : 0) << 15; header.setUint16(2, hasSubChunksBit + chunkData.length, true); diff --git a/src/encoders/data/data-tracker-timestamp-chunk.ts b/src/encoders/data/data-tracker-timestamp-chunk.ts index dcc674b..01e0456 100644 --- a/src/encoders/data/data-tracker-timestamp-chunk.ts +++ b/src/encoders/data/data-tracker-timestamp-chunk.ts @@ -1,7 +1,7 @@ import chunk from '../chunk'; +const buf = new DataView(new ArrayBuffer(8)); export default (timestamp: bigint): Uint8Array => { - const buf = new DataView(new ArrayBuffer(8)); buf.setBigUint64(0, BigInt(timestamp), true); return chunk(0x0006, new Uint8Array(buf.buffer), false); }; diff --git a/src/encoders/packet-header-chunk.ts b/src/encoders/packet-header-chunk.ts index d844877..84b3210 100644 --- a/src/encoders/packet-header-chunk.ts +++ b/src/encoders/packet-header-chunk.ts @@ -1,5 +1,6 @@ import chunk from './chunk'; +const packetHeader = new DataView(new ArrayBuffer(12)); export default ( timestamp: bigint, versionHigh: number, @@ -33,7 +34,6 @@ export default ( throw new Error('frame packet count must be >= 0 and <= 255'); } - const packetHeader = new DataView(new ArrayBuffer(12)); packetHeader.setBigUint64(0, BigInt(timestamp), true); packetHeader.setUint8(8, versionHigh); packetHeader.setUint8(9, versionLow);