hazelcast-client
Version:
Hazelcast - open source In-Memory Data Grid - client for NodeJS
41 lines • 1.93 kB
JavaScript
var ClassDefinition_1 = require("./ClassDefinition");
var ClassDefinitionContext = (function () {
function ClassDefinitionContext(factoryId, portableVersion) {
this.factoryId = factoryId;
this.classDefs = {};
}
ClassDefinitionContext.encodeVersionedClassId = function (classId, version) {
return classId + 'v' + version;
};
ClassDefinitionContext.decodeVersionedClassId = function (encoded) {
var re = /(\d+)v(\d+)/;
var extracted = re.exec(encoded);
return [Number.parseInt(extracted[1]), Number.parseInt(extracted[2])];
};
ClassDefinitionContext.prototype.lookup = function (classId, version) {
var encoded = ClassDefinitionContext.encodeVersionedClassId(classId, version);
return this.classDefs[encoded];
};
ClassDefinitionContext.prototype.register = function (classDefinition) {
if (classDefinition === null) {
return null;
}
if (classDefinition.getFactoryId() !== this.factoryId) {
throw new RangeError("This factory's number is " + this.factoryId + ". \n Intended factory id is " + classDefinition.getFactoryId());
}
var cdKey = ClassDefinitionContext.encodeVersionedClassId(classDefinition.getClassId(), classDefinition.getVersion());
var current = this.classDefs[cdKey];
if (current == null) {
this.classDefs[cdKey] = classDefinition;
return classDefinition;
}
if (current instanceof ClassDefinition_1.ClassDefinition && !current.equals(classDefinition)) {
throw new RangeError("Incompatible class definition with same class id: " + classDefinition.getClassId());
}
return classDefinition;
};
return ClassDefinitionContext;
}());
exports.ClassDefinitionContext = ClassDefinitionContext;
//# sourceMappingURL=ClassDefinitionContext.js.map
;