mirror of
https://github.com/jwetzell/psn-js.git
synced 2026-09-02 04:49:10 +00:00
replace DataView with inline bit twiddling
This commit is contained in:
@@ -10,8 +10,7 @@ export default (buffer: Uint8Array): DataPacketChunk => {
|
|||||||
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
while (offset < chunk.header.dataLen) {
|
while (offset < chunk.header.dataLen) {
|
||||||
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
|
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
|
||||||
const chunkId = view.getUint16(offset, true);
|
|
||||||
switch (chunkId) {
|
switch (chunkId) {
|
||||||
case 0x0000:
|
case 0x0000:
|
||||||
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
|
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ export default (buffer: Uint8Array): InfoPacketChunk => {
|
|||||||
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
while (offset < chunk.header.dataLen) {
|
while (offset < chunk.header.dataLen) {
|
||||||
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
|
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
|
||||||
const chunkId = view.getUint16(offset, true);
|
|
||||||
switch (chunkId) {
|
switch (chunkId) {
|
||||||
case 0x0000:
|
case 0x0000:
|
||||||
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
|
data.packetHeader = Decoders.PacketHeaderChunk(chunk.chunkData.subarray(offset));
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ export default (buffer: Uint8Array): InfoTrackerChunk => {
|
|||||||
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
if (chunk.header.hasSubchunks && chunk.chunkData && chunk.header.dataLen) {
|
||||||
let offset = 0;
|
let offset = 0;
|
||||||
while (offset < chunk.header.dataLen) {
|
while (offset < chunk.header.dataLen) {
|
||||||
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
|
const chunkId = (chunk.chunkData.subarray(offset)[1] << 8) + chunk.chunkData.subarray(offset)[0];
|
||||||
const chunkId = view.getUint16(offset, true);
|
|
||||||
switch (chunkId) {
|
switch (chunkId) {
|
||||||
case 0x0000: {
|
case 0x0000: {
|
||||||
const data: InfoTrackerChunkData = {
|
const data: InfoTrackerChunkData = {
|
||||||
|
|||||||
@@ -4,9 +4,16 @@ import { PacketHeaderChunk, PacketHeaderChunkData } from '../models/packet-heade
|
|||||||
export default (buffer: Uint8Array): PacketHeaderChunk => {
|
export default (buffer: Uint8Array): PacketHeaderChunk => {
|
||||||
const chunk = Decoders.Chunk(buffer);
|
const chunk = Decoders.Chunk(buffer);
|
||||||
|
|
||||||
const view = new DataView(chunk.chunkData.buffer, chunk.chunkData.byteOffset, chunk.chunkData.byteLength);
|
let packetTimestamp = BigInt(chunk.chunkData[7]) << BigInt(56);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[6]) << BigInt(48);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[5]) << BigInt(40);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[4]) << BigInt(32);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[3]) << BigInt(24);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[2]) << BigInt(16);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[1]) << BigInt(8);
|
||||||
|
packetTimestamp += BigInt(chunk.chunkData[0]);
|
||||||
const data: PacketHeaderChunkData = {
|
const data: PacketHeaderChunkData = {
|
||||||
packetTimestamp: view.getBigUint64(0, true),
|
packetTimestamp,
|
||||||
versionHigh: chunk.chunkData[8],
|
versionHigh: chunk.chunkData[8],
|
||||||
versionLow: chunk.chunkData[9],
|
versionLow: chunk.chunkData[9],
|
||||||
frameId: chunk.chunkData[10],
|
frameId: chunk.chunkData[10],
|
||||||
|
|||||||
Reference in New Issue
Block a user