UNPKG

hazelcast-client

Version:

Hazelcast - open source In-Memory Data Grid - client for NodeJS

72 lines 2.6 kB
"use strict"; var KeyState; (function (KeyState) { KeyState[KeyState["UNMARKED"] = 0] = "UNMARKED"; KeyState[KeyState["MARKED"] = 1] = "MARKED"; KeyState[KeyState["REMOVED"] = 2] = "REMOVED"; })(KeyState || (KeyState = {})); var KeyStateMarkerImpl = (function () { function KeyStateMarkerImpl(markerCount) { this.marks = []; for (var i = markerCount - 1; i >= 0; i--) { this.marks[i] = KeyState.UNMARKED; } } KeyStateMarkerImpl.prototype.markIfUnmarked = function (key) { return this.compareAndSet(key, KeyState.UNMARKED, KeyState.MARKED); }; KeyStateMarkerImpl.prototype.unmarkIfMarked = function (key) { return this.compareAndSet(key, KeyState.MARKED, KeyState.UNMARKED); }; KeyStateMarkerImpl.prototype.removeIfMarked = function (key) { return this.compareAndSet(key, KeyState.MARKED, KeyState.REMOVED); }; KeyStateMarkerImpl.prototype.unmarkForcibly = function (key) { var slot = this.getSlot(key); this.marks[slot] = KeyState.UNMARKED; }; KeyStateMarkerImpl.prototype.unmarkAllForcibly = function () { for (var i = 0; i < this.marks.length; i++) { this.marks[i] = KeyState.UNMARKED; } }; KeyStateMarkerImpl.prototype.compareAndSet = function (key, expect, update) { var slot = this.getSlot(key); if (this.marks[slot] === expect) { this.marks[slot] = update; return true; } else { return false; } }; KeyStateMarkerImpl.prototype.getSlot = function (data) { return this.hashToIndex(data.getPartitionHash(), this.marks.length); }; KeyStateMarkerImpl.prototype.hashToIndex = function (hash, len) { return Math.abs(hash) % len; }; return KeyStateMarkerImpl; }()); exports.KeyStateMarkerImpl = KeyStateMarkerImpl; var TrueKeyStateMarker = (function () { function TrueKeyStateMarker() { } TrueKeyStateMarker.prototype.markIfUnmarked = function (key) { return true; }; TrueKeyStateMarker.prototype.unmarkIfMarked = function (key) { return true; }; TrueKeyStateMarker.prototype.removeIfMarked = function (key) { return true; }; TrueKeyStateMarker.prototype.unmarkForcibly = function (key) { }; TrueKeyStateMarker.prototype.unmarkAllForcibly = function () { }; return TrueKeyStateMarker; }()); TrueKeyStateMarker.INSTANCE = new TrueKeyStateMarker(); exports.TrueKeyStateMarker = TrueKeyStateMarker; //# sourceMappingURL=KeyStateMarker.js.map