@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
47 lines • 2.92 kB
JavaScript
;
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _MessageDecoder_restArray, _MessageDecoder_onMessage;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageDecoder = void 0;
const uint8array_1 = require("../../utils/uint8array");
const MESSAGE_LENGTH_BYTE_LENGTH = 4;
class MessageDecoder {
constructor(config) {
_MessageDecoder_restArray.set(this, void 0);
_MessageDecoder_onMessage.set(this, void 0);
__classPrivateFieldSet(this, _MessageDecoder_restArray, new Uint8Array(), "f");
__classPrivateFieldSet(this, _MessageDecoder_onMessage, config.onMessage, "f");
}
appendData(data) {
const combinedArray = (0, uint8array_1.concat)(__classPrivateFieldGet(this, _MessageDecoder_restArray, "f"), data);
const view = new DataView(combinedArray.buffer, combinedArray.byteOffset, combinedArray.byteLength);
let byteOffset = 0;
for (;;) {
if (combinedArray.byteLength - byteOffset < MESSAGE_LENGTH_BYTE_LENGTH) {
break;
}
const messageByteLength = view.getUint32(byteOffset, false);
const messageByteOffset = byteOffset + MESSAGE_LENGTH_BYTE_LENGTH;
if (combinedArray.byteLength - messageByteOffset < messageByteLength) {
break;
}
const message = combinedArray.slice(messageByteOffset, messageByteOffset + messageByteLength);
byteOffset = messageByteOffset + messageByteLength;
__classPrivateFieldGet(this, _MessageDecoder_onMessage, "f").call(this, message);
}
__classPrivateFieldSet(this, _MessageDecoder_restArray, combinedArray.slice(byteOffset), "f");
}
}
exports.MessageDecoder = MessageDecoder;
_MessageDecoder_restArray = new WeakMap(), _MessageDecoder_onMessage = new WeakMap();
//# sourceMappingURL=index.js.map