@pandorajs/hub
Version:
pandora.js messenge hub
55 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectProxyBehaviourManager = void 0;
const DefaultObjectProxyBehaviour_1 = require("./DefaultObjectProxyBehaviour");
const ObjectUtils_1 = require("./ObjectUtils");
/**
* ObjectProxyBehaviourManager
* Unified management of all Object Proxy Behaviour through Remote and Proxy
*/
class ObjectProxyBehaviourManager {
constructor() {
this.idToBehaviour = new Map();
}
/**
* Set a Behaviour for an ObjectDescription
* @param {ObjectDescription} objectDescription
* @param {ObjectProxyBehaviour} behaviour
*/
setBehaviour(objectDescription, behaviour) {
const id = ObjectUtils_1.ObjectUtils.objectDescriptionToId(objectDescription);
this.idToBehaviour.set(id, behaviour);
}
/**
* Remove a Behaviour by an ObjectDescription
* @param {ObjectDescription} objectDescription
* @param {ObjectProxyBehaviour} behaviour
*/
removeBehaviour(objectDescription) {
const id = ObjectUtils_1.ObjectUtils.objectDescriptionToId(objectDescription);
this.idToBehaviour.delete(id);
}
/**
* Get the Behaviour by an ObjectDescription
* Default as DefaultObjectProxyBehaviour if there not set Behaviour for this ObjectDescription
* @param {ObjectDescription} objectDescription
* @param {ObjectProxyBehaviour} behaviour
*/
getBehaviour(objectDescription) {
const id = ObjectUtils_1.ObjectUtils.objectDescriptionToId(objectDescription);
if (this.idToBehaviour.has(id)) {
return this.idToBehaviour.get(id);
}
else {
return DefaultObjectProxyBehaviour_1.DefaultObjectProxyBehaviour;
}
}
static getInstance() {
if (!ObjectProxyBehaviourManager.instance) {
ObjectProxyBehaviourManager.instance = new ObjectProxyBehaviourManager();
}
return ObjectProxyBehaviourManager.instance;
}
}
exports.ObjectProxyBehaviourManager = ObjectProxyBehaviourManager;
//# sourceMappingURL=ObjectProxyBehaviourManager.js.map