var events = require('events') var util = require('util') var wire = require('./') var log = require('../util/logger').createLogger('wire:router') function Router() { if (!(this instanceof Router)) { return new Router() } events.EventEmitter.call(this) } util.inherits(Router, events.EventEmitter) Router.prototype.handler = function() { return function(channel, data) { var wrapper = wire.Envelope.decode(data) , type = wire.ReverseMessageType[wrapper.type] if (type) { this.emit( wrapper.type , channel , wire[type].decode(wrapper.message) , data ) } else { log.warn( 'Unknown message type "%d", perhaps we need an update?' , wrapper.type ) } }.bind(this) } module.exports = Router