Return task object including fault details in case of fault. Return reason for connection request failure.

This commit is contained in:
Zaid Abdulla committed 2015-07-09 22:22:04 +03:00
1 parent b2609c228a
commit cda98e3145
2 files changed
+29 -10

No files matched your search

+8 -4
View File
@@ -130,15 +130,19 @@ connectionRequest = (deviceId, callback) ->
watchTask = (taskId, timeout, callback) ->
setTimeout( () ->
db.tasksCollection.findOne({_id : taskId}, {'_id' : 1}, (err, task) ->
db.tasksCollection.findOne({_id : taskId}, {'_id' : 1, 'fault' : 1}, (err, task) ->
return callback(err) if err
if task
timeout -= 500
if timeout < 0
callback(new Error('Timeout'))
if task.fault?
callback(null, 'fault')
else if timeout <= 0
callback(null, 'timeout')
else
watchTask(taskId, timeout, callback)
else
callback(err)
callback(null, 'completed')
)
, 500)
+21 -6
View File
@@ -200,16 +200,31 @@ listener = (request, response) ->
if urlParts.query.connection_request?
apiFunctions.connectionRequest(deviceId, (err) ->
if err
response.writeHead(202, {'Content-Type' : 'application/json'})
response.writeHead(202, err.message, {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
else
apiFunctions.watchTask(task._id, config.get('DEVICE_ONLINE_THRESHOLD', deviceId), (err) ->
apiFunctions.watchTask(task._id, config.get('DEVICE_ONLINE_THRESHOLD', deviceId), (err, status) ->
if err
response.writeHead(202, {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
response.writeHead(500)
response.end(errorToString(err))
return
response.writeHead(200, {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
if status is 'timeout'
response.writeHead(202, 'Task queued but not processed', {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
else if status is 'fault'
db.tasksCollection.findOne({_id : task._id}, (err, task) ->
if err
response.writeHead(500)
response.end(errorToString(err))
return
response.writeHead(202, 'Task faulted', {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
)
else
response.writeHead(200, {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task))
)
)
else