@jsprismarine/raknet
Version:
Basic RakNet implementation written in TypeScript
33 lines (30 loc) • 3.06 kB
JavaScript
import ACK from './ACK.es.js';
import FrameSet from './FrameSet.es.js';
import NACK from './NACK.es.js';
class PacketPool {
ackPool = [];
nackPool = [];
framesetPool = [];
getAckInstance() {
return this.ackPool.pop() ?? new ACK();
}
getNackInstance() {
return this.nackPool.pop() ?? new NACK();
}
getFrameSetInstance() {
return this.framesetPool.pop() ?? new FrameSet();
}
returnAck(ack) {
this.ackPool.push(ack);
}
returnNack(nack) {
this.nackPool.push(nack);
}
returnFrameSet(frameSet) {
frameSet.frames = [];
frameSet.sequenceNumber = -1;
this.framesetPool.push(frameSet);
}
}
export { PacketPool as default };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2V0UG9vbC5lcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3RvY29sL1BhY2tldFBvb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFDSyBmcm9tICcuL0FDSyc7XG5pbXBvcnQgRnJhbWVTZXQgZnJvbSAnLi9GcmFtZVNldCc7XG5pbXBvcnQgTkFDSyBmcm9tICcuL05BQ0snO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYWNrZXRQb29sIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFja1Bvb2w6IEFDS1tdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYWNrUG9vbDogTkFDS1tdID0gW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBmcmFtZXNldFBvb2w6IEZyYW1lU2V0W10gPSBbXTtcblxuICAgIHB1YmxpYyBnZXRBY2tJbnN0YW5jZSgpOiBBQ0sge1xuICAgICAgICByZXR1cm4gdGhpcy5hY2tQb29sLnBvcCgpID8/IG5ldyBBQ0soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmFja0luc3RhbmNlKCk6IE5BQ0sge1xuICAgICAgICByZXR1cm4gdGhpcy5uYWNrUG9vbC5wb3AoKSA/PyBuZXcgTkFDSygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGcmFtZVNldEluc3RhbmNlKCk6IEZyYW1lU2V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJhbWVzZXRQb29sLnBvcCgpID8/IG5ldyBGcmFtZVNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXR1cm5BY2soYWNrOiBBQ0spOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY2tQb29sLnB1c2goYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmV0dXJuTmFjayhuYWNrOiBOQUNLKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmFja1Bvb2wucHVzaChuYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmV0dXJuRnJhbWVTZXQoZnJhbWVTZXQ6IEZyYW1lU2V0KTogdm9pZCB7XG4gICAgICAgIGZyYW1lU2V0LmZyYW1lcyA9IFtdO1xuICAgICAgICBmcmFtZVNldC5zZXF1ZW5jZU51bWJlciA9IC0xO1xuICAgICAgICB0aGlzLmZyYW1lc2V0UG9vbC5wdXNoKGZyYW1lU2V0KTtcbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLE1BQXFCLFVBQVcsQ0FBQTtBQUFBLEVBQ1gsVUFBaUIsRUFBQztBQUFBLEVBQ2xCLFdBQW1CLEVBQUM7QUFBQSxFQUNwQixlQUEyQixFQUFDO0FBQUEsRUFFdEMsY0FBc0IsR0FBQTtBQUN6QixJQUFBLE9BQU8sSUFBSyxDQUFBLE9BQUEsQ0FBUSxHQUFJLEVBQUEsSUFBSyxJQUFJLEdBQUksRUFBQTtBQUFBO0FBQ3pDLEVBRU8sZUFBd0IsR0FBQTtBQUMzQixJQUFBLE9BQU8sSUFBSyxDQUFBLFFBQUEsQ0FBUyxHQUFJLEVBQUEsSUFBSyxJQUFJLElBQUssRUFBQTtBQUFBO0FBQzNDLEVBRU8sbUJBQWdDLEdBQUE7QUFDbkMsSUFBQSxPQUFPLElBQUssQ0FBQSxZQUFBLENBQWEsR0FBSSxFQUFBLElBQUssSUFBSSxRQUFTLEVBQUE7QUFBQTtBQUNuRCxFQUVPLFVBQVUsR0FBZ0IsRUFBQTtBQUM3QixJQUFLLElBQUEsQ0FBQSxPQUFBLENBQVEsS0FBSyxHQUFHLENBQUE7QUFBQTtBQUN6QixFQUVPLFdBQVcsSUFBa0IsRUFBQTtBQUNoQyxJQUFLLElBQUEsQ0FBQSxRQUFBLENBQVMsS0FBSyxJQUFJLENBQUE7QUFBQTtBQUMzQixFQUVPLGVBQWUsUUFBMEIsRUFBQTtBQUM1QyxJQUFBLFFBQUEsQ0FBUyxTQUFTLEVBQUM7QUFDbkIsSUFBQSxRQUFBLENBQVMsY0FBaUIsR0FBQSxFQUFBO0FBQzFCLElBQUssSUFBQSxDQUFBLFlBQUEsQ0FBYSxLQUFLLFFBQVEsQ0FBQTtBQUFBO0FBRXZDOzs7OyJ9