@jsprismarine/raknet
Version:
Basic RakNet implementation written in TypeScript
67 lines (66 loc) • 7.33 kB
JavaScript
;
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=