mirror of
https://github.com/jwetzell/psn-js.git
synced 2026-08-19 14:14:22 +00:00
more dataview replacements
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
import { Chunk } from '../models/chunk';
|
||||
|
||||
export default (buffer: Uint8Array): Chunk => {
|
||||
let offset = 0;
|
||||
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
||||
const id = view.getUint16(offset, true);
|
||||
offset += 2;
|
||||
if (buffer.length < 4) {
|
||||
throw new Error('Chunk buffer must be at least 4 bytes');
|
||||
}
|
||||
|
||||
const id = (buffer[1] << 8) + buffer[0];
|
||||
|
||||
// NOTE(jwetzell): this data is split up as 1 bit for hasSubchunks and 15 bits for the dataLen
|
||||
const combinedLengthAndFlag = view.getUint16(offset, true);
|
||||
const combinedLengthAndFlag = (buffer[3] << 8) + buffer[2];
|
||||
const hasSubchunks = combinedLengthAndFlag > 32768;
|
||||
const dataLen = hasSubchunks ? combinedLengthAndFlag - 32768 : combinedLengthAndFlag;
|
||||
offset += 2;
|
||||
|
||||
const header = {
|
||||
id,
|
||||
@@ -18,7 +18,7 @@ export default (buffer: Uint8Array): Chunk => {
|
||||
hasSubchunks,
|
||||
};
|
||||
|
||||
const chunkData = buffer.subarray(offset, offset + header.dataLen);
|
||||
const chunkData = buffer.subarray(4, 4 + header.dataLen);
|
||||
|
||||
const chunk = {
|
||||
chunkData,
|
||||
|
||||
Reference in New Issue
Block a user