mirror of
https://github.com/openstf/stf
synced 2025-10-03 17:59:28 +02:00
Get rid of switch statements in favor of an EventEmitter-based router for message handling.
This commit is contained in:
parent
ade611670e
commit
48d5648b9d
8 changed files with 224 additions and 188 deletions
39
lib/wire/router.js
Normal file
39
lib/wire/router.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
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
|
Loading…
Add table
Add a link
Reference in a new issue