context.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var Channel = require("./channel");
  2. class Context {
  3. constructor(eventual) {
  4. this.version = "Context obj MAP version";
  5. this.eventual = eventual;
  6. //this.listeners = new Map();
  7. this.listeners = {}; // Flat map
  8. this.watchers = {};
  9. }
  10. destroy() {
  11. this.eventual.destroyContext(this);
  12. }
  13. // Create a master channel inheritance?
  14. channel(...names) {
  15. var finalName = names.join(Channel.SEP);
  16. return new Channel(this,finalName);
  17. }
  18. get(name,create) {
  19. if(!this.listeners[name] && create) {
  20. var o = {listeners:{},callbacks:[]};
  21. this.listeners[name]= o;
  22. return o;
  23. }
  24. // Should return copy
  25. return this.listeners[name];
  26. /*var nodes = name.split(chs);
  27. var cur = this;
  28. for(var v of nodes ) {
  29. if(cur.listeners[v] == undefined) {
  30. if(create == undefined) { return null; }
  31. cur.listeners[v] = {listeners:{},callbacks:[]}
  32. }
  33. cur = cur.listeners[v]; // next;
  34. };
  35. return cur;*/
  36. }
  37. getCallbacks(name) {
  38. var listener = this.get(name);
  39. if(listener==null) return [];
  40. return listener.callbacks;
  41. }
  42. getWatchers(name) {
  43. return this.watchers[name] || [];
  44. }
  45. }
  46. module.exports = Context;