Files
bennc/src/structures/server.ts
2022-02-02 01:58:55 +00:00

36 lines
903 B
TypeScript

import { MAX_DATA_LENGTH } from '../common'
import { SmartBuffer } from '../smart-buffer'
export class IncomingPacket extends SmartBuffer {
fields: {
messageType: number
senderId: number
length: number
data: Uint8Array
}
constructor (data: ArrayBuffer) {
super()
this.data = new Uint8Array(data)
this.fields = {
messageType: this.readUInt16(),
senderId: this.readUInt32(),
length: this.readUInt16(),
data: this.readBytes(this.length)
}
}
}
export class OutgoingPacket extends SmartBuffer {
constructor (messageType: number, data: Uint8Array = new Uint8Array(0)) {
super()
if (data.length > MAX_DATA_LENGTH) {
throw RangeError(`Specified data of length ${data.length} exceeds max data length ${MAX_DATA_LENGTH}.`)
}
this.writeUInt16(messageType)
this.writeUInt16(data.length)
this.writeBytes(data)
}
}