From 813bd836f56e5407c3f97a627c21e509344679b5 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Tue, 25 Dec 2012 11:18:54 +0300 Subject: [PATCH] Optimized new device detection --- acs.coffee | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/acs.coffee b/acs.coffee index 8449aed..32d6cac 100644 --- a/acs.coffee +++ b/acs.coffee @@ -70,8 +70,27 @@ updateDevice = (deviceId, actions, callback) -> updates["#{path}_timestamp"] = now if Object.keys(updates).length > 0 - devicesCollection.update({'_id' : deviceId}, {'$set' : updates}, {upsert: true, safe: true}, (err) -> - callback(err) if callback? + devicesCollection.update({'_id' : deviceId}, {'$set' : updates}, {safe: true}, (err, count) -> + if (err) + callback(err) if callback? + return + + if count == 0 + util.log("#{deviceId}: new device detected") + updates['_id'] = deviceId + devicesCollection.save(updates, {safe: true}, (err) -> + if err? + callback(err) if callback? + return + + task = {device : deviceId, name : 'init', timestamp : mongo.Timestamp()} + tasksCollection.save(task, (err) -> + util.log("#{deviceId}: Added init task #{task._id}") + callback(err) if callback? + ) + ) + else + callback() if callback? ) else callback() if callback? @@ -189,18 +208,10 @@ else cookies.DeviceId = deviceId = common.getDeviceId(reqParams.deviceId) if config.DEBUG util.log("#{deviceId}: inform (#{reqParams.eventCodes}); retry count #{reqParams.retryCount}") - devicesCollection.count({'_id' : deviceId}, (err, count) -> - if not count - util.log("#{deviceId}: new device detected") - task = {device : deviceId, name : 'init', timestamp : mongo.Timestamp()} - tasksCollection.save(task, (err) -> - util.log("#{deviceId}: Added init task #{task._id}") - ) - updateDevice(deviceId, {'inform' : true, 'parameterValues' : reqParams.informParameterValues}, (err) -> - res = tr069.response(reqParams.sessionId, resParams, cookies) - writeResponse response, res - ) + updateDevice(deviceId, {'inform' : true, 'parameterValues' : reqParams.informParameterValues}, (err) -> + res = tr069.response(reqParams.sessionId, resParams, cookies) + writeResponse response, res ) return