From f2aab487c22f4919d48896d33cd0f09ba0928395 Mon Sep 17 00:00:00 2001 From: TheMas3212 Date: Sat, 23 Sep 2023 12:21:43 +1000 Subject: Add additional Packet Types --- src/packets/utils.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/packets/utils.ts (limited to 'src/packets/utils.ts') diff --git a/src/packets/utils.ts b/src/packets/utils.ts new file mode 100644 index 0000000..3a5befc --- /dev/null +++ b/src/packets/utils.ts @@ -0,0 +1,37 @@ +import { packetName } from "../constants"; +import { minUInt, writeUintN, writeUint8 } from "../utils"; + +export interface TASDPacket { + key: number; + size: number; + toBuffer(g_keylen: number): Uint8Array; + toString(): string; +} + +export function buildBuffer(g_keylen: number, key: number, payload: Uint8Array) { + const plen = payload.length; + const pexp = minUInt(plen); + const buffer = new Uint8Array(g_keylen + 1 + pexp + plen); + let index = 0; + writeUintN(key, buffer, index, g_keylen); + index += g_keylen; + writeUint8(pexp, buffer, index); + index += 1; + writeUintN(plen, buffer, index, pexp); + index += pexp; + buffer.set(payload, index); + return buffer; +} + +export class UnknownPacket implements TASDPacket { + constructor(public key: number, public payload: Uint8Array) {} + get size() { + return this.payload.length; + } + toBuffer(g_keylen: number) { + return buildBuffer(g_keylen, this.key, this.payload); + } + toString() { + return `UnknownPacket ${packetName(this.key)}, ${this.size}`; + } +} \ No newline at end of file -- cgit v1.2.3