mirror of
https://github.com/jwetzell/psn-js.git
synced 2026-09-11 00:59:41 +00:00
more dataview replacements
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
import { Chunk } from '../models/chunk';
|
import { Chunk } from '../models/chunk';
|
||||||
|
|
||||||
export default (buffer: Uint8Array): Chunk => {
|
export default (buffer: Uint8Array): Chunk => {
|
||||||
let offset = 0;
|
if (buffer.length < 4) {
|
||||||
const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
throw new Error('Chunk buffer must be at least 4 bytes');
|
||||||
const id = view.getUint16(offset, true);
|
}
|
||||||
offset += 2;
|
|
||||||
|
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
|
// 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 hasSubchunks = combinedLengthAndFlag > 32768;
|
||||||
const dataLen = hasSubchunks ? combinedLengthAndFlag - 32768 : combinedLengthAndFlag;
|
const dataLen = hasSubchunks ? combinedLengthAndFlag - 32768 : combinedLengthAndFlag;
|
||||||
offset += 2;
|
|
||||||
|
|
||||||
const header = {
|
const header = {
|
||||||
id,
|
id,
|
||||||
@@ -18,7 +18,7 @@ export default (buffer: Uint8Array): Chunk => {
|
|||||||
hasSubchunks,
|
hasSubchunks,
|
||||||
};
|
};
|
||||||
|
|
||||||
const chunkData = buffer.subarray(offset, offset + header.dataLen);
|
const chunkData = buffer.subarray(4, 4 + header.dataLen);
|
||||||
|
|
||||||
const chunk = {
|
const chunk = {
|
||||||
chunkData,
|
chunkData,
|
||||||
|
|||||||
Reference in New Issue
Block a user