1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-04 10:19:30 +02:00

Get rid of switch statements in favor of an EventEmitter-based router for message handling.

This commit is contained in:
Simo Kinnunen 2014-02-02 19:55:44 +09:00
parent ade611670e
commit 48d5648b9d
8 changed files with 224 additions and 188 deletions

View file

@ -2,6 +2,7 @@ var zmq = require('zmq')
var logger = require('../util/logger')
var wire = require('../wire')
var wirerouter = require('../wire/router')
var wireutil = require('../util/wireutil')(wire)
var dbapi = require('../db/api')
@ -30,49 +31,34 @@ module.exports = function(options) {
devDealer.connect(endpoint)
})
devDealer.on('message', function(channel, data) {
var wrapper = wire.Envelope.decode(data)
switch (wrapper.type) {
case wire.MessageType.JOIN_GROUP:
var message = wire.JoinGroupMessage.decode(wrapper.message)
appDealer.send([channel, data])
break
case wire.MessageType.LEAVE_GROUP:
var message = wire.LeaveGroupMessage.decode(wrapper.message)
appDealer.send([channel, data])
break
case wire.MessageType.DEVICE_LOG:
var message = wire.DeviceLogMessage.decode(wrapper.message)
dbapi.saveDeviceLog(message.serial, message)
appDealer.send([channel, data])
break
case wire.MessageType.DEVICE_POKE:
var message = wire.DevicePokeMessage.decode(wrapper.message)
devDealer.send([message.channel, wireutil.makeProbeMessage()])
break
case wire.MessageType.DEVICE_IDENTITY:
var message = wire.DeviceIdentityMessage.decode(wrapper.message)
dbapi.saveDeviceIdentity(message.serial, message)
break
case wire.MessageType.DEVICE_STATUS:
var message = wire.DeviceStatusMessage.decode(wrapper.message)
dbapi.saveDeviceStatus(message.serial, message)
break
case wire.MessageType.DEVICE_PROPERTIES:
var message = wire.DevicePropertiesMessage.decode(wrapper.message)
break
case wire.MessageType.DEVICE_DATA:
var message = wire.DeviceDataMessage.decode(wrapper.message)
appDealer.send([channel, data])
break
case wire.MessageType.DEVICE_DONE:
var message = wire.DeviceDoneMessage.decode(wrapper.message)
appDealer.send([channel, data])
break
case wire.MessageType.DEVICE_FAIL:
var message = wire.DeviceFailMessage.decode(wrapper.message)
appDealer.send([channel, data])
break
}
})
devDealer.on('message', wirerouter()
.on(wire.MessageType.JoinGroupMessage, function(channel, message, data) {
appDealer.send([channel, data])
})
.on(wire.MessageType.LeaveGroupMessage, function(channel, message, data) {
appDealer.send([channel, data])
})
.on(wire.MessageType.DeviceLogMessage, function(channel, message, data) {
dbapi.saveDeviceLog(message.serial, message)
appDealer.send([channel, data])
})
.on(wire.MessageType.DevicePokeMessage, function(channel, message) {
devDealer.send([message.channel, wireutil.makeProbeMessage()])
})
.on(wire.MessageType.DeviceIdentityMessage, function(channel, message) {
dbapi.saveDeviceIdentity(message.serial, message)
})
.on(wire.MessageType.DeviceStatusMessage, function(channel, message) {
dbapi.saveDeviceStatus(message.serial, message)
})
.on(wire.MessageType.DeviceShellCommandDataMessage, function(channel, message, data) {
appDealer.send([channel, data])
})
.on(wire.MessageType.DeviceShellCommandDoneMessage, function(channel, message, data) {
appDealer.send([channel, data])
})
.on(wire.MessageType.DeviceShellCommandFailMessage, function(channel, message, data) {
appDealer.send([channel, data])
})
.handler())
}