var anyHasListener = function (channel) { var sockets = channelMap.get('sockets'); for (var i in sockets) { if (sockets.hasOwnProperty(i)) { if (channelMap.hasKey(['sockets', i].concat(channel))) { return true; } } } return false; };
Broker.prototype.publish = function (channel, message) { var sockets = channelMap.get('sockets'); var sock, channelKey; for (var i in sockets) { if (sockets.hasOwnProperty(i)) { channelKey = ['sockets', i].concat(channel); if (channelMap.hasKey(channelKey)) { sock = channelMap.get(channelKey); if (sock instanceof com.ComSocket) { send(sock, {type: 'message', channel: channel, value: message}); } } } } };
setInterval(function () { var keys = dataExpirer.extractExpiredKeys(); var len = keys.length; for (var i = 0; i < len; i++) { dataMap.remove(keys[i]); } }, EXPIRY_ACCURACY);
var removeAllListeners = function (socket) { var subMap = channelMap.remove(['sockets', socket.id]); var channels = []; for (var i in subMap) { if (subMap.hasOwnProperty(i)) { channels.push(i); } } return channels; };
var run = function (query, baseKey) { var rebasedDataMap; if (baseKey) { rebasedDataMap = dataMap.getRaw(baseKey); } else { rebasedDataMap = dataMap; } return Function('"use strict"; return (' + query + ')(arguments[0], arguments[1], arguments[2]);')(rebasedDataMap, dataExpirer, channelMap); };
var removeListener = function (socket, channel) { channelMap.remove(['sockets', socket.id].concat(channel)); };
var hasListener = function (socket, channel) { return channelMap.hasKey(['sockets', socket.id].concat(channel)); };
var addListener = function (socket, channel) { channelMap.set(['sockets', socket.id].concat(channel), socket); };
isSubscribed: function (command, socket) { var result = channelMap.hasKey(['sockets', socket.id, command.channel]); send(socket, {id: command.id, type: 'response', action: 'isSubscribed', channel: command.channel, value: result}); },
var getListeners = function (socket) { return channelMap.get(['sockets', socket.id]); };