123456789101112131415161718192021222324252627282930313233343536 |
- /**
- * Implements utility to forward events from one eventEmitter to another.
- * @param src {object} instance of EventEmitter or another class that implements
- * addListener method which will register listener to EventEmitter instance.
- * @param dest {object} instance of EventEmitter or another class that
- * implements emit method which will emit an event.
- */
- function EventEmitterForwarder (src, dest) {
- if (!src || !dest || typeof src.addListener !== "function" ||
- typeof dest.emit !== "function") {
- throw new Error("Invalid arguments passed to EventEmitterForwarder");
- }
- this.src = src;
- this.dest = dest;
- }
-
- /**
- * Adds event to be forwarded from src to dest.
- * @param srcEvent {string} the event that EventEmitterForwarder is listening
- * for.
- * @param dstEvent {string} the event that will be fired from dest.
- * @param arguments all other passed arguments are going to be fired with
- * dstEvent.
- */
- EventEmitterForwarder.prototype.forward = function () {
- // This line is only for fixing jshint errors.
- var args = arguments;
- var srcEvent = args[0];
- //This will be the "this" value for emit function.
- args[0] = this.dest;
- //Using bind.apply to pass the arguments as Array-like object ("arguments")
- this.src.addListener(srcEvent,
- Function.prototype.bind.apply(this.dest.emit, args));
- };
-
- module.exports = EventEmitterForwarder;
|