Spaces:
Sleeping
Sleeping
var events = require('events'); | |
var debug = require('debug')('nodemon'); | |
var util = require('util'); | |
var Bus = function () { | |
events.EventEmitter.call(this); | |
}; | |
util.inherits(Bus, events.EventEmitter); | |
var bus = new Bus(); | |
// /* | |
var collected = {}; | |
bus.on('newListener', function (event) { | |
debug('bus new listener: %s (%s)', event, bus.listeners(event).length); | |
if (!collected[event]) { | |
collected[event] = true; | |
bus.on(event, function () { | |
debug('bus emit: %s', event); | |
}); | |
} | |
}); | |
// */ | |
// proxy process messages (if forked) to the bus | |
process.on('message', function (event) { | |
debug('process.message(%s)', event); | |
bus.emit(event); | |
}); | |
var emit = bus.emit; | |
// if nodemon was spawned via a fork, allow upstream communication | |
// via process.send | |
if (process.send) { | |
bus.emit = function (event, data) { | |
process.send({ type: event, data: data }); | |
emit.apply(bus, arguments); | |
}; | |
} | |
module.exports = bus; | |