hazelcast-client
Version:
Hazelcast - open source In-Memory Data Grid - client for NodeJS
72 lines • 2.6 kB
JavaScript
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
;