UNPKG

@devgrid/netron

Version:
84 lines 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Packet = void 0; const uid_1 = require("../uid"); const types_1 = require("./types"); const getBit = (target, offset) => (target >> offset) & 1; const clearBits = (target, offset, count) => { let result = target; for (let i = offset; i < offset + count; ++i) { result &= ~(1 << i); } return result; }; const writeBits = (target, val, offset, count) => { let result = target; for (let i = 0; i < count; ++i) { if (val & (1 << i)) { result |= 1 << (offset + i); } } return result; }; const readBits = (target, offset, count) => { let val = 0; for (let i = 0; i < count; ++i) { if (getBit(target, offset + i)) { val |= 1 << i; } } return val; }; const IMPULSE_OFFSET = 6; const ERROR_OFFSET = 7; const TYPE_OFFSET = 0; const TYPE_SIZE = 4; const EOS_OFFSET = 4; const LIVE_OFFSET = 5; const uid = new uid_1.Uid(); class Packet { constructor(id) { this.id = id; this.flags = 0; } setType(type) { this.flags = writeBits(clearBits(this.flags, TYPE_OFFSET, TYPE_SIZE), type, TYPE_OFFSET, TYPE_SIZE); } getType() { return readBits(this.flags, TYPE_OFFSET, TYPE_SIZE); } setImpulse(val) { this.flags = (this.flags & ~(1 << IMPULSE_OFFSET)) | (val << IMPULSE_OFFSET); } getImpulse() { return getBit(this.flags, IMPULSE_OFFSET); } setError(val) { this.flags = (this.flags & ~(1 << ERROR_OFFSET)) | (val << ERROR_OFFSET); } getError() { return getBit(this.flags, ERROR_OFFSET); } setStreamInfo(streamId, streamIndex, isLast, isLive) { this.streamId = streamId; this.streamIndex = streamIndex; this.flags = writeBits(writeBits(this.flags, isLast ? 1 : 0, EOS_OFFSET, 1), isLive ? 1 : 0, LIVE_OFFSET, 1); } isStreamChunk() { return this.getType() === types_1.TYPE_STREAM; } isLastChunk() { return getBit(this.flags, EOS_OFFSET) === 1; } isLive() { return getBit(this.flags, LIVE_OFFSET) === 1; } static nextId() { return uid.next(); } static resetId() { uid.reset(); } } exports.Packet = Packet; //# sourceMappingURL=packet.js.map