@jsprismarine/raknet
Version:
Basic RakNet implementation written in TypeScript
37 lines (36 loc) • 3.63 kB
JavaScript
;
Object.defineProperties(exports, {
__esModule: { value: true },
[Symbol.toStringTag]: { value: "Module" }
});
const require_protocol_Packet = require("./Packet.cjs.cjs");
const require_protocol_BitFlags = require("./BitFlags.cjs.cjs");
const require_protocol_Frame = require("./Frame.cjs.cjs");
//#region src/protocol/FrameSet.ts
var DATAGRAM_HEADER_BYTE_LENGTH = 6;
var FrameSet = class extends require_protocol_Packet.default {
constructor(buffer) {
super(require_protocol_BitFlags.BitFlags.VALID, buffer);
}
sequenceNumber;
frames = [];
decodePayload() {
this.sequenceNumber = this.readUnsignedTriadLE();
do
this.frames.push(new require_protocol_Frame.default().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
exports.DATAGRAM_HEADER_BYTE_LENGTH = DATAGRAM_HEADER_BYTE_LENGTH;
exports.default = FrameSet;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbWVTZXQuY2pzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdG9jb2wvRnJhbWVTZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpdEZsYWdzIGZyb20gJy4vQml0RmxhZ3MnO1xuaW1wb3J0IEZyYW1lIGZyb20gJy4vRnJhbWUnO1xuaW1wb3J0IFBhY2tldCBmcm9tICcuL1BhY2tldCc7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9va2FyY2hpdmUvUmFrTmV0L2Jsb2IvMWExNjk4OTVhOTAwYzlmYzQ4NDFjNTU2ZTE2NTE0MTgyYjc1ZmFmOC9Tb3VyY2UvUmVsaWFiaWxpdHlMYXllci5jcHAjTDEzM1xuZXhwb3J0IGNvbnN0IERBVEFHUkFNX0hFQURFUl9CWVRFX0xFTkdUSCA9IDY7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyYW1lU2V0IGV4dGVuZHMgUGFja2V0IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoYnVmZmVyPzogQnVmZmVyKSB7XG4gICAgICAgIHN1cGVyKEJpdEZsYWdzLlZBTElELCBidWZmZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXF1ZW5jZU51bWJlciE6IG51bWJlcjtcbiAgICBwdWJsaWMgZnJhbWVzOiBGcmFtZVtdID0gW107XG5cbiAgICBwdWJsaWMgZGVjb2RlUGF5bG9hZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXF1ZW5jZU51bWJlciA9IHRoaXMucmVhZFVuc2lnbmVkVHJpYWRMRSgpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB0aGlzLmZyYW1lcy5wdXNoKG5ldyBGcmFtZSgpLmZyb21CaW5hcnkodGhpcykpO1xuICAgICAgICB9IHdoaWxlICghdGhpcy5mZW9mKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbmNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlVW5zaWduZWRUcmlhZExFKHRoaXMuc2VxdWVuY2VOdW1iZXIpO1xuICAgICAgICBmb3IgKGNvbnN0IGZyYW1lIG9mIHRoaXMuZnJhbWVzKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlKGZyYW1lLnRvQmluYXJ5KCkuZ2V0QnVmZmVyKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZm9yIGNvbnRpbnVvcyBmbGFnXG4gICAgLy8gcHVibGljIGFkZEZyYW1lKCk6IGJvb2xlYW4ge31cblxuICAgIHB1YmxpYyBnZXRCeXRlTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIGxldCBsZW5ndGggPSA0OyAvLyBoZWFkZXIgKDEgYnl0ZSkgKyB0cmlhZCAoMyBieXRlcylcbiAgICAgICAgZm9yIChjb25zdCBmcmFtZSBvZiB0aGlzLmZyYW1lcykge1xuICAgICAgICAgICAgbGVuZ3RoICs9IGZyYW1lLmdldEJ5dGVMZW5ndGgoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBS0EsSUFBYSw4QkFBOEI7QUFFM0MsSUFBcUIsV0FBckIsY0FBc0Msd0JBQUEsUUFBTztDQUN6QyxZQUFtQixRQUFpQjtFQUNoQyxNQUFNLDBCQUFBLFNBQVMsT0FBTyxNQUFNO0NBQ2hDO0NBRUE7Q0FDQSxTQUF5QixDQUFDO0NBRTFCLGdCQUE2QjtFQUN6QixLQUFLLGlCQUFpQixLQUFLLG9CQUFvQjtFQUMvQztHQUNJLEtBQUssT0FBTyxLQUFLLElBQUksdUJBQUEsUUFBTSxFQUFFLFdBQVcsSUFBSSxDQUFDO1NBQ3hDLENBQUMsS0FBSyxLQUFLO0NBQ3hCO0NBRUEsZ0JBQTZCO0VBQ3pCLEtBQUsscUJBQXFCLEtBQUssY0FBYztFQUM3QyxLQUFLLE1BQU0sU0FBUyxLQUFLLFFBQ3JCLEtBQUssTUFBTSxNQUFNLFNBQVMsRUFBRSxVQUFVLENBQUM7Q0FFL0M7Q0FLQSxnQkFBK0I7RUFDM0IsSUFBSSxTQUFTO0VBQ2IsS0FBSyxNQUFNLFNBQVMsS0FBSyxRQUNyQixVQUFVLE1BQU0sY0FBYztFQUVsQyxPQUFPO0NBQ1g7QUFDSiJ9