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:18 +03:00
1 parent 907d13606c
commit 2cf31935bc
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) -> watchTask = (taskId, timeout, callback) ->
setTimeout( () -> 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 if task
timeout -= 500 timeout -= 500
if timeout < 0 if task.fault?
callback(new Error('Timeout')) callback(null, 'fault')
else if timeout <= 0
callback(null, 'timeout')
else else
watchTask(taskId, timeout, callback) watchTask(taskId, timeout, callback)
else else
callback(err) callback(null, 'completed')
) )
, 500) , 500)
+21 -6
View File
@@ -200,16 +200,31 @@ listener = (request, response) ->
if urlParts.query.connection_request? if urlParts.query.connection_request?
apiFunctions.connectionRequest(deviceId, (err) -> apiFunctions.connectionRequest(deviceId, (err) ->
if err if err
response.writeHead(202, {'Content-Type' : 'application/json'}) response.writeHead(202, err.message, {'Content-Type' : 'application/json'})
response.end(JSON.stringify(task)) response.end(JSON.stringify(task))
else 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 if err
response.writeHead(202, {'Content-Type' : 'application/json'}) response.writeHead(500)
response.end(JSON.stringify(task)) response.end(errorToString(err))
return 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 else