Clear presets hash if needed based on changing inform parameters or bootstrap event

This commit is contained in:
Zaid Abdulla committed 2014-03-14 12:35:40 +03:00
1 parent febd6f6cd4
commit 13960f9f20
1 file changed
+12 -7
+12 -7
View File
@@ -139,14 +139,9 @@ inform = (currentRequest, cwmpRequest) ->
actions.set._lastBoot = now if '1 BOOT' in cwmpRequest.methodRequest.event actions.set._lastBoot = now if '1 BOOT' in cwmpRequest.methodRequest.event
actions.set._lastBootstrap = lastBootstrap = now if '0 BOOTSTRAP' in cwmpRequest.methodRequest.event actions.set._lastBootstrap = lastBootstrap = now if '0 BOOTSTRAP' in cwmpRequest.methodRequest.event
db.redisClient.get("#{currentRequest.deviceId}_inform_hash", (err, res) -> db.redisClient.get("#{currentRequest.deviceId}_inform_hash", (err, oldInformHash) ->
throw err if err throw err if err
if not res?
db.redisClient.setex("#{currentRequest.deviceId}_inform_hash", config.PRESETS_CACHE_DURATION, informHash, (err, res) ->
throw err if err
)
updateAndRespond = () -> updateAndRespond = () ->
updateDevice(currentRequest, actions, (err) -> updateDevice(currentRequest, actions, (err) ->
throw err if err throw err if err
@@ -154,9 +149,13 @@ inform = (currentRequest, cwmpRequest) ->
writeResponse(currentRequest, res) writeResponse(currentRequest, res)
) )
if res == informHash if oldInformHash == informHash and not lastBootstrap?
return updateAndRespond() return updateAndRespond()
db.redisClient.setex("#{currentRequest.deviceId}_inform_hash", config.PRESETS_CACHE_DURATION, informHash, (err, res) ->
throw err if err
)
# populate projection and parameterStructure # populate projection and parameterStructure
parameterStructure = {} parameterStructure = {}
projection = {} projection = {}
@@ -202,6 +201,12 @@ inform = (currentRequest, cwmpRequest) ->
actions.deletedObjects ?= [] actions.deletedObjects ?= []
actions.deletedObjects.push("_customCommands.#{cmd}") actions.deletedObjects.push("_customCommands.#{cmd}")
# clear presets hash if parameters are potentially modified
if _tasks.length > 0
db.redisClient.del("#{currentRequest.deviceId}_presets_hash", (err) ->
throw err if err
)
apiFunctions.insertTasks(_tasks, {}, () -> apiFunctions.insertTasks(_tasks, {}, () ->
updateAndRespond() updateAndRespond()
) )