@aptpod/iscp-ts
Version:
iSCP 2.0 client library for TypeScript
43 lines • 2.75 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;
import { concat } from '../../utils/uint8array';
const MESSAGE_LENGTH_BYTE_LENGTH = 4;
export 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 = 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");
}
}
_MessageDecoder_restArray = new WeakMap(), _MessageDecoder_onMessage = new WeakMap();
//# sourceMappingURL=index.js.map