UNPKG

@jsprismarine/raknet

Version:
31 lines (30 loc) 3.29 kB
import Packet from "./Packet.es.js"; import { BitFlags } from "./BitFlags.es.js"; import Frame from "./Frame.es.js"; //#region src/protocol/FrameSet.ts var DATAGRAM_HEADER_BYTE_LENGTH = 6; var FrameSet = class extends Packet { constructor(buffer) { super(BitFlags.VALID, buffer); } sequenceNumber; frames = []; decodePayload() { this.sequenceNumber = this.readUnsignedTriadLE(); do this.frames.push(new Frame().fromBinary(this)); while (!this.feof()); } encodePayload() { this.writeUnsignedTriadLE(this.sequenceNumber); for (const frame of this.frames) this.write(frame.toBinary().getBuffer()); } getByteLength() { let length = 4; for (const frame of this.frames) length += frame.getByteLength(); return length; } }; //#endregion export { DATAGRAM_HEADER_BYTE_LENGTH, FrameSet as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbWVTZXQuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3RvY29sL0ZyYW1lU2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaXRGbGFncyBmcm9tICcuL0JpdEZsYWdzJztcbmltcG9ydCBGcmFtZSBmcm9tICcuL0ZyYW1lJztcbmltcG9ydCBQYWNrZXQgZnJvbSAnLi9QYWNrZXQnO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2thcmNoaXZlL1Jha05ldC9ibG9iLzFhMTY5ODk1YTkwMGM5ZmM0ODQxYzU1NmUxNjUxNDE4MmI3NWZhZjgvU291cmNlL1JlbGlhYmlsaXR5TGF5ZXIuY3BwI0wxMzNcbmV4cG9ydCBjb25zdCBEQVRBR1JBTV9IRUFERVJfQllURV9MRU5HVEggPSA2O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVNldCBleHRlbmRzIFBhY2tldCB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGJ1ZmZlcj86IEJ1ZmZlcikge1xuICAgICAgICBzdXBlcihCaXRGbGFncy5WQUxJRCwgYnVmZmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VxdWVuY2VOdW1iZXIhOiBudW1iZXI7XG4gICAgcHVibGljIGZyYW1lczogRnJhbWVbXSA9IFtdO1xuXG4gICAgcHVibGljIGRlY29kZVBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VxdWVuY2VOdW1iZXIgPSB0aGlzLnJlYWRVbnNpZ25lZFRyaWFkTEUoKTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdGhpcy5mcmFtZXMucHVzaChuZXcgRnJhbWUoKS5mcm9tQmluYXJ5KHRoaXMpKTtcbiAgICAgICAgfSB3aGlsZSAoIXRoaXMuZmVvZigpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5jb2RlUGF5bG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkVHJpYWRMRSh0aGlzLnNlcXVlbmNlTnVtYmVyKTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFtZSBvZiB0aGlzLmZyYW1lcykge1xuICAgICAgICAgICAgdGhpcy53cml0ZShmcmFtZS50b0JpbmFyeSgpLmdldEJ1ZmZlcigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZvciBjb250aW51b3MgZmxhZ1xuICAgIC8vIHB1YmxpYyBhZGRGcmFtZSgpOiBib29sZWFuIHt9XG5cbiAgICBwdWJsaWMgZ2V0Qnl0ZUxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgbGVuZ3RoID0gNDsgLy8gaGVhZGVyICgxIGJ5dGUpICsgdHJpYWQgKDMgYnl0ZXMpXG4gICAgICAgIGZvciAoY29uc3QgZnJhbWUgb2YgdGhpcy5mcmFtZXMpIHtcbiAgICAgICAgICAgIGxlbmd0aCArPSBmcmFtZS5nZXRCeXRlTGVuZ3RoKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFLQSxJQUFhLDhCQUE4QjtBQUUzQyxJQUFxQixXQUFyQixjQUFzQyxPQUFPO0NBQ3pDLFlBQW1CLFFBQWlCO0VBQ2hDLE1BQU0sU0FBUyxPQUFPLE1BQU07Q0FDaEM7Q0FFQTtDQUNBLFNBQXlCLENBQUM7Q0FFMUIsZ0JBQTZCO0VBQ3pCLEtBQUssaUJBQWlCLEtBQUssb0JBQW9CO0VBQy9DO0dBQ0ksS0FBSyxPQUFPLEtBQUssSUFBSSxNQUFNLEVBQUUsV0FBVyxJQUFJLENBQUM7U0FDeEMsQ0FBQyxLQUFLLEtBQUs7Q0FDeEI7Q0FFQSxnQkFBNkI7RUFDekIsS0FBSyxxQkFBcUIsS0FBSyxjQUFjO0VBQzdDLEtBQUssTUFBTSxTQUFTLEtBQUssUUFDckIsS0FBSyxNQUFNLE1BQU0sU0FBUyxFQUFFLFVBQVUsQ0FBQztDQUUvQztDQUtBLGdCQUErQjtFQUMzQixJQUFJLFNBQVM7RUFDYixLQUFLLE1BQU0sU0FBUyxLQUFLLFFBQ3JCLFVBQVUsTUFBTSxjQUFjO0VBRWxDLE9BQU87Q0FDWDtBQUNKIn0=