1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- const chs = "/"; // Channel separator
- class Channel {
- constructor(context,name) {
- this.context = context;
- this._name = name; // Full name
- }
- name(name) {
- if(name == undefined) return this._name;
- return this._name + chs + name;
- }
- channel(...names) { // Sub channel
- var name = names.join("/");
- return new Channel(this.context,this.name(name));
- }
- on(sname,callback,order) {
- var name = this.name(sname);
- var listener = this.context.get(name,true);
- listener.callbacks.push({name,callback,order});
- //this.context.on(this.name(name),cb,order);
-
- return this;
- }
- after(name,cb) {
- this.on(this.name(name),cb,1000);
- return this;
- }
- emit(name,...args){
- return this.context.eventual.emit(this.name(name),...args);
- }
- propagate(name,...args) {
- // special case
- return this.context.eventual.propagate(this.name(name),this._name,...args);
- }
- set(name,value) {
- this.context.eventual.set(this.name(name),value);
- return this;
- }
- watch(sname,callback) {
- var name = this.name(sname);
- if(this.context.watchers[name]== undefined) this.context.watchers[name]= [];
- this.context.watchers[name].push(callback);
- callback(this.context.eventual._events.store[name]);
- //this.context.watch(this.name + ":" + name,cb);
- }
- }
- module.exports = Channel;
|