vulcain-corejs
Version:
Vulcain micro-service framework
47 lines (45 loc) • 1.52 kB
JavaScript
"use strict";
const dynamicProperties_1 = require("./dynamicProperties");
const rx = require("rx");
class DynamicProperty {
constructor(propertiesManager, name, defaultValue) {
this.propertiesManager = propertiesManager;
this.name = name;
this.defaultValue = defaultValue;
this.disposed = false;
this._propertyChanged = new rx.Subject();
dynamicProperties_1.DynamicProperties.registerPropertyAsDependency(name, defaultValue);
}
get propertyChanged() {
return this._propertyChanged;
}
get value() {
if (this.disposed)
throw new Error("Can not use a disposed property. Do you have call DynamicProperties.reset() ?");
return this.val || this.defaultValue;
}
set(val) {
if (this.disposed)
throw new Error("Can not use a disposed property. Do you have call DynamicProperties.reset() ?");
if (this.val !== val) {
this.val = val;
this.onPropertyChanged();
}
}
onPropertyChanged() {
this._propertyChanged.onNext(this);
this.propertiesManager.onPropertyChanged(this, "changed");
}
reset() {
this.val = undefined;
this.onPropertyChanged();
}
dispose() {
this.disposed = true;
this.onPropertyChanged();
this._propertyChanged.dispose();
this._propertyChanged = new rx.Subject();
}
}
exports.DynamicProperty = DynamicProperty;
//# sourceMappingURL=dynamicProperty.js.map