X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=version1%2Fsrc%2Fjs%2Fiotjs%2Fsrc%2Fslotindexer.js;fp=version1%2Fsrc%2Fjs%2Fiotjs%2Fsrc%2Fslotindexer.js;h=66f4b4d66d0ec9a5e098e3a166df371d96a22caa;hb=7ee0658d03ecf06c490aa12422ed330cc4d43058;hp=0000000000000000000000000000000000000000;hpb=63136ef92e46eb1ddc1b4fa945661fa20b9473fe;p=iotcloud.git diff --git a/version1/src/js/iotjs/src/slotindexer.js b/version1/src/js/iotjs/src/slotindexer.js new file mode 100644 index 0000000..66f4b4d --- /dev/null +++ b/version1/src/js/iotjs/src/slotindexer.js @@ -0,0 +1,39 @@ +"use strict"; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var SlotIndexer = function () { + function SlotIndexer(_updates, _buffer) { + _classCallCheck(this, SlotIndexer); + + // updates is an array of slot objects + // buffer is an instanceof slotbuffer constructor object in slotbuffer.js + this.updates = _updates; + if (_buffer && _buffer instanceof SlotBuffer) { + this.buffer = _buffer; + } else { + throw new Error("Argument error Buffer should be an instance of SlotBuffer"); + } + this.firstslotseqnum = this.updates[0].getSequenceNumber(); + } + + _createClass(SlotIndexer, [{ + key: "getSlot", + value: function getSlot(seqnum) { + if (seqnum >= this.firstslotseqnum) { + var offset = seqnum - this.firstslotseqnum; + if (offset >= this.updates.length) { + throw new Error('Invalid Slot Sequence Number Reference'); + } else { + return this.updates[offset]; + } + } else { + return this.buffer.getSlot(seqnum); + } + } + }]); + + return SlotIndexer; +}(); \ No newline at end of file