mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-19 16:43:26 +02:00
Reaper decides if a device is present or not. Allows devices to "come back to life" if they start beating again.
This commit is contained in:
@@ -54,8 +54,8 @@ module.exports = function(options) {
|
||||
|
||||
devDealer.on('message', wirerouter()
|
||||
// Initial device message
|
||||
.on(wire.DevicePresentMessage, function(channel, message, data) {
|
||||
dbapi.saveDevice(message.serial, message)
|
||||
.on(wire.DeviceIntroductionMessage, function(channel, message, data) {
|
||||
dbapi.saveDeviceInitialState(message.serial, message)
|
||||
.then(function() {
|
||||
devDealer.send([
|
||||
message.provider.channel
|
||||
@@ -67,6 +67,10 @@ module.exports = function(options) {
|
||||
})
|
||||
})
|
||||
// Workerless messages
|
||||
.on(wire.DevicePresentMessage, function(channel, message, data) {
|
||||
dbapi.setDevicePresent(message.serial)
|
||||
appDealer.send([channel, data])
|
||||
})
|
||||
.on(wire.DeviceAbsentMessage, function(channel, message, data) {
|
||||
dbapi.setDeviceAbsent(message.serial)
|
||||
appDealer.send([channel, data])
|
||||
|
||||
@@ -151,7 +151,7 @@ module.exports = function(options) {
|
||||
// Tell others we found a device
|
||||
push.send([
|
||||
wireutil.global
|
||||
, wireutil.envelope(new wire.DevicePresentMessage(
|
||||
, wireutil.envelope(new wire.DeviceIntroductionMessage(
|
||||
device.id
|
||||
, wireutil.toDeviceStatus(device.type)
|
||||
, new wire.ProviderMessage(
|
||||
|
||||
@@ -56,7 +56,17 @@ module.exports = function(options) {
|
||||
lifecycle.fatal()
|
||||
})
|
||||
|
||||
ttlset.on('timeout', function(serial) {
|
||||
ttlset.on('insert', function(serial) {
|
||||
log.info('Device "%s" is present', serial)
|
||||
push.send([
|
||||
wireutil.global
|
||||
, wireutil.envelope(new wire.DevicePresentMessage(
|
||||
serial
|
||||
))
|
||||
])
|
||||
})
|
||||
|
||||
ttlset.on('drop', function(serial) {
|
||||
log.info('Reaping device "%s" due to heartbeat timeout', serial)
|
||||
push.send([
|
||||
wireutil.global
|
||||
@@ -73,7 +83,7 @@ module.exports = function(options) {
|
||||
.then(function(list) {
|
||||
var now = Date.now()
|
||||
list.forEach(function(device) {
|
||||
ttlset.bump(device.serial, now)
|
||||
ttlset.bump(device.serial, now, TtlSet.SILENT)
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -81,14 +91,14 @@ module.exports = function(options) {
|
||||
|
||||
function listenToChanges() {
|
||||
sub.on('message', wirerouter()
|
||||
.on(wire.DevicePresentMessage, function(channel, message) {
|
||||
.on(wire.DeviceIntroductionMessage, function(channel, message) {
|
||||
ttlset.bump(message.serial, Date.now())
|
||||
})
|
||||
.on(wire.DeviceHeartbeatMessage, function(channel, message) {
|
||||
ttlset.bump(message.serial, Date.now())
|
||||
})
|
||||
.on(wire.DeviceAbsentMessage, function(channel, message) {
|
||||
ttlset.drop(message.serial)
|
||||
ttlset.drop(message.serial, TtlSet.SILENT)
|
||||
})
|
||||
.handler())
|
||||
}
|
||||
|
||||
@@ -120,26 +120,35 @@ module.exports = function(options) {
|
||||
.on(wire.DeviceLogMessage, function(channel, message) {
|
||||
socket.emit('device.log', message)
|
||||
})
|
||||
.on(wire.DevicePresentMessage, function(channel, message) {
|
||||
.on(wire.DeviceIntroductionMessage, function(channel, message) {
|
||||
socket.emit('device.add', {
|
||||
important: true
|
||||
, data: {
|
||||
serial: message.serial
|
||||
, present: false
|
||||
, provider: message.provider
|
||||
, present: true
|
||||
, owner: null
|
||||
, status: message.status
|
||||
, ready: false
|
||||
, reverseForwards: []
|
||||
}
|
||||
})
|
||||
})
|
||||
.on(wire.DevicePresentMessage, function(channel, message) {
|
||||
socket.emit('device.change', {
|
||||
important: true
|
||||
, data: {
|
||||
serial: message.serial
|
||||
, present: true
|
||||
}
|
||||
})
|
||||
})
|
||||
.on(wire.DeviceAbsentMessage, function(channel, message) {
|
||||
socket.emit('device.remove', {
|
||||
important: true
|
||||
, data: {
|
||||
serial: message.serial
|
||||
, present: false
|
||||
, ready: false
|
||||
, using: false
|
||||
, likelyLeaveReason: 'device_absent'
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user