You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
946 B
44 lines
946 B
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;
|
|
|