UNPKG

lirc

Version:

An old IRC client for node

102 lines (87 loc) 2.55 kB
// Generated by CoffeeScript 1.12.7 (function() { var botnet, cluster, events, lirc, typeOf; events = require('events'); cluster = require('cluster'); lirc = require('../lirc'); botnet = require('./botnet'); typeOf = lirc.utils.typeOf; module.exports = botnet.emitter = new events.EventEmitter(); botnet.on = function() { var args, i, len, ref, results, val; if (typeof arguments[0] === 'string') { arguments[0] = [arguments[0]]; } ref = arguments[0]; results = []; for (i = 0, len = ref.length; i < len; i++) { val = ref[i]; args = Array.prototype.slice.call(arguments); val = val.toLowerCase(); args[0] = val; results.push(botnet.emitter.on.apply(lirc.botnet.emitter, args)); } return results; }; botnet.emit = function() { var key, obj, ref, results, worker, workerId; obj = botnet.emit.parseArgs(arguments); if (cluster.isMaster) { ref = botnet.bots; results = []; for (key in ref) { worker = ref[key]; workerId = 0; if (obj.workerId != null) { workerId = obj.workerId.toString(); } if (key !== workerId) { results.push(worker.send(obj)); } else { results.push(void 0); } } return results; } else { return botnet.emit.master(obj); } }; botnet.emit.local = function() { var args; args = Array.prototype.slice.call(arguments); if (typeOf(args[0]) === 'array' && args.length === 1) { args = args[0]; } args[0] = args[0] || '*'; args[0] = args[0].toLowerCase(); if (args[0] !== '*') { arguments.callee('*', args); } return botnet.emitter.emit.apply(botnet.emitter, args); }; botnet.emit.master = function() { var obj; if (!('send' in process)) { return lirc.error('warn', "botnet.send.master(), can't use process.send()"); } obj = botnet.emit.parseArgs(arguments); return process.send(obj); }; botnet.emit.worker = function() {}; botnet.emit.parseArgs = function(args) { var ref, ref1; args = Array.prototype.slice.call(args); if (typeOf(args[0]) === 'object') { if (!args[0].workerId) { args[0].workerId = ((ref = cluster.worker) != null ? ref.id : void 0) || 0; } return args[0]; } return { cmd: 'emit.botnet', args: args, workerId: ((ref1 = cluster.worker) != null ? ref1.id : void 0) || 0 }; }; botnet.emitter._events = {}; }).call(this);