UNPKG

@jsprismarine/raknet

Version:
67 lines (66 loc) 7.33 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require_runtime = require("../_virtual/_rolldown/runtime.cjs.cjs"); const require_protocol_Packet = require("./Packet.cjs.cjs"); let _jsprismarine_jsbinaryutils = require("@jsprismarine/jsbinaryutils"); _jsprismarine_jsbinaryutils = require_runtime.__toESM(_jsprismarine_jsbinaryutils, 1); //#region src/protocol/AcknowledgePacket.ts var AcknowledgePacket = class extends require_protocol_Packet.default { sequenceNumbers = []; decodePayload() { this.sequenceNumbers = []; const recordCount = this.readUnsignedShort(); for (let i = 0; i < recordCount; i++) if (this.readBoolean()) this.sequenceNumbers.push(this.readUnsignedTriadLE()); else { const start = this.readUnsignedTriadLE(); const end = this.readUnsignedTriadLE(); for (let i = start; i <= end; i++) this.sequenceNumbers.push(i); } } encodePayload() { const stream = new _jsprismarine_jsbinaryutils.default(); this.sequenceNumbers.sort((a, b) => a - b); const count = this.sequenceNumbers.length; let records = 0; if (count > 0) { let pointer = 1; let start = this.sequenceNumbers[0]; let last = this.sequenceNumbers[0]; while (pointer < count) { const current = this.sequenceNumbers[pointer++]; const diff = current - last; if (diff === 1) last = current; else if (diff > 1) { if (start === last) { stream.writeBoolean(true); stream.writeUnsignedTriadLE(start); start = last = current; } else { stream.writeBoolean(false); stream.writeUnsignedTriadLE(start); stream.writeUnsignedTriadLE(last); start = last = current; } ++records; } } if (start === last) { stream.writeBoolean(true); stream.writeUnsignedTriadLE(start); } else { stream.writeBoolean(false); stream.writeUnsignedTriadLE(start); stream.writeUnsignedTriadLE(last); } ++records; } this.writeUnsignedShort(records); this.write(stream.getBuffer()); } }; //#endregion exports.default = AcknowledgePacket; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWNrbm93bGVkZ2VQYWNrZXQuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdG9jb2wvQWNrbm93bGVkZ2VQYWNrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IFBhY2tldCBmcm9tICcuL1BhY2tldCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFja25vd2xlZGdlUGFja2V0IGV4dGVuZHMgUGFja2V0IHtcbiAgICBwdWJsaWMgc2VxdWVuY2VOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgcHVibGljIGRlY29kZVBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIC8vIENsZWFyIG9sZCBjYWNoZWQgZGVjb2RlZCBwYWNrZXRzXG4gICAgICAgIHRoaXMuc2VxdWVuY2VOdW1iZXJzID0gW107XG5cbiAgICAgICAgY29uc3QgcmVjb3JkQ291bnQgPSB0aGlzLnJlYWRVbnNpZ25lZFNob3J0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgbm90UmFuZ2UgPSB0aGlzLnJlYWRCb29sZWFuKCk7XG5cbiAgICAgICAgICAgIGlmIChub3RSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VOdW1iZXJzLnB1c2godGhpcy5yZWFkVW5zaWduZWRUcmlhZExFKCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucmVhZFVuc2lnbmVkVHJpYWRMRSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IHRoaXMucmVhZFVuc2lnbmVkVHJpYWRMRSgpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VxdWVuY2VOdW1iZXJzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGVuY29kZVBheWxvYWQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBCaW5hcnlTdHJlYW0oKTtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZU51bWJlcnMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuc2VxdWVuY2VOdW1iZXJzLmxlbmd0aDtcbiAgICAgICAgbGV0IHJlY29yZHMgPSAwO1xuXG4gICAgICAgIGlmIChjb3VudCA+IDApIHtcbiAgICAgICAgICAgIGxldCBwb2ludGVyID0gMTtcbiAgICAgICAgICAgIGxldCBzdGFydCA9IHRoaXMuc2VxdWVuY2VOdW1iZXJzWzBdITtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gdGhpcy5zZXF1ZW5jZU51bWJlcnNbMF0hO1xuXG4gICAgICAgICAgICB3aGlsZSAocG9pbnRlciA8IGNvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuc2VxdWVuY2VOdW1iZXJzW3BvaW50ZXIrK10hO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBjdXJyZW50IC0gbGFzdDtcbiAgICAgICAgICAgICAgICBpZiAoZGlmZiA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0ID0gY3VycmVudDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlQm9vbGVhbih0cnVlKTsgLy8gc2luZ2xlP1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRUcmlhZExFKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGFzdCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gc2luZ2xlP1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRUcmlhZExFKHN0YXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZVVuc2lnbmVkVHJpYWRMRShsYXN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gbGFzdCA9IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKytyZWNvcmRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbGFzdCBpdGVyYXRpb25cbiAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZUJvb2xlYW4odHJ1ZSk7IC8vIHNpbmdsZT9cbiAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFRyaWFkTEUoc3RhcnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGVCb29sZWFuKGZhbHNlKTsgLy8gc2luZ2xlP1xuICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZVVuc2lnbmVkVHJpYWRMRShzdGFydCk7XG4gICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRUcmlhZExFKGxhc3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKytyZWNvcmRzO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53cml0ZVVuc2lnbmVkU2hvcnQocmVjb3Jkcyk7XG4gICAgICAgIHRoaXMud3JpdGUoc3RyZWFtLmdldEJ1ZmZlcigpKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFxQixvQkFBckIsY0FBK0Msd0JBQUEsUUFBTztDQUNsRCxrQkFBbUMsQ0FBQztDQUVwQyxnQkFBNkI7RUFFekIsS0FBSyxrQkFBa0IsQ0FBQztFQUV4QixNQUFNLGNBQWMsS0FBSyxrQkFBa0I7RUFDM0MsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLGFBQWEsS0FHN0IsSUFGaUIsS0FBSyxZQUVsQixHQUNBLEtBQUssZ0JBQWdCLEtBQUssS0FBSyxvQkFBb0IsQ0FBQztPQUNqRDtHQUNILE1BQU0sUUFBUSxLQUFLLG9CQUFvQjtHQUN2QyxNQUFNLE1BQU0sS0FBSyxvQkFBb0I7R0FFckMsS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssS0FDMUIsS0FBSyxnQkFBZ0IsS0FBSyxDQUFDO0VBRW5DO0NBRVI7Q0FFQSxnQkFBNkI7RUFDekIsTUFBTSxTQUFTLElBQUksNEJBQUEsUUFBYTtFQUNoQyxLQUFLLGdCQUFnQixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUM7RUFDekMsTUFBTSxRQUFRLEtBQUssZ0JBQWdCO0VBQ25DLElBQUksVUFBVTtFQUVkLElBQUksUUFBUSxHQUFHO0dBQ1gsSUFBSSxVQUFVO0dBQ2QsSUFBSSxRQUFRLEtBQUssZ0JBQWdCO0dBQ2pDLElBQUksT0FBTyxLQUFLLGdCQUFnQjtHQUVoQyxPQUFPLFVBQVUsT0FBTztJQUNwQixNQUFNLFVBQVUsS0FBSyxnQkFBZ0I7SUFDckMsTUFBTSxPQUFPLFVBQVU7SUFDdkIsSUFBSSxTQUFTLEdBQ1QsT0FBTztTQUNKLElBQUksT0FBTyxHQUFHO0tBQ2pCLElBQUksVUFBVSxNQUFNO01BQ2hCLE9BQU8sYUFBYSxJQUFJO01BQ3hCLE9BQU8scUJBQXFCLEtBQUs7TUFDakMsUUFBUSxPQUFPO0tBQ25CLE9BQU87TUFDSCxPQUFPLGFBQWEsS0FBSztNQUN6QixPQUFPLHFCQUFxQixLQUFLO01BQ2pDLE9BQU8scUJBQXFCLElBQUk7TUFDaEMsUUFBUSxPQUFPO0tBQ25CO0tBQ0EsRUFBRTtJQUNOO0dBQ0o7R0FHQSxJQUFJLFVBQVUsTUFBTTtJQUNoQixPQUFPLGFBQWEsSUFBSTtJQUN4QixPQUFPLHFCQUFxQixLQUFLO0dBQ3JDLE9BQU87SUFDSCxPQUFPLGFBQWEsS0FBSztJQUN6QixPQUFPLHFCQUFxQixLQUFLO0lBQ2pDLE9BQU8scUJBQXFCLElBQUk7R0FDcEM7R0FDQSxFQUFFO0VBQ047RUFFQSxLQUFLLG1CQUFtQixPQUFPO0VBQy9CLEtBQUssTUFBTSxPQUFPLFVBQVUsQ0FBQztDQUNqQztBQUNKIn0=