cdif
Version:
Common device interconnect framework
39 lines (33 loc) • 1.13 kB
JavaScript
function SubscriberManager(io) {
this.io = io;
this.subscriberList = {};
}
SubscriberManager.prototype.getSubscriber = function(id, io, info, callback) {
if (this.subscriberList[id] == null) {
var subscriber = new Subscriber(io, id, info);
this.subscriberList[id] = subscriber;
callback(subscriber);
} else {
callback(this.subscriberList[id]);
}
};
SubscriberManager.prototype.removeSubscriber = function(id, callback) {
var subscriber = this.subscriberList[id];
if (subscriber == null) {
return callback(new Error('cannot remove non existed subscriber'));
}
callback(null, subscriber, subscriber.info);
this.subscriberList[id] = null;
};
function Subscriber(io, id, info) {
this.io = io;
this.id = id;
this.info = info;
this.publish = this.publish.bind(this);
}
Subscriber.prototype.publish = function(updated, deviceID, serviceID, data) {
if (updated || !this.info.onUpdate) {
this.io.to(this.id).emit('event', {timeStamp: Date.now(), deviceID: deviceID, serviceID: serviceID, eventData: data});
}
};
module.exports = SubscriberManager;