Major updates paving the road support ACS methods

This commit is contained in:
Zaid Abdulla committed 2013-01-22 11:48:24 +03:00
1 parent 3ce097359c
commit 462e9e3afd
3 files changed
+207 -191

No files matched your search

+32 -20
View File
@@ -1,13 +1,13 @@
common = require './common'
BATCH_SIZE = 16
this.init = (task, cwmpRequest, cwmpResponse) ->
this.init = (task, methodResponse, cwmpResponse) ->
ret = {}
if not task.subtask?
task.subtask = {'name' : 'getParameterNames', 'parameterPath' : '', 'nextLevel' : false}
if task.subtask.name == 'getParameterNames'
common.extend(ret, this.getParameterNames(task.subtask, cwmpRequest, cwmpResponse))
common.extend(ret, this.getParameterNames(task.subtask, methodResponse, cwmpResponse))
if ret.parameterNames? # task finished
parameterNames = []
for p in ret.parameterNames
@@ -16,37 +16,44 @@ this.init = (task, cwmpRequest, cwmpResponse) ->
task.subtask = {'name' : 'getParameterValues', 'parameterNames' : parameterNames}
if task.subtask.name == 'getParameterValues'
common.extend(ret, this.getParameterValues(task.subtask, cwmpRequest, cwmpResponse))
common.extend(ret, this.getParameterValues(task.subtask, methodResponse, cwmpResponse))
ret
this.getParameterNames = (task, cwmpRequest, cwmpResponse) ->
if cwmpRequest.getParameterNamesResponse?
return {'parameterNames' : cwmpRequest.getParameterNamesResponse}
this.getParameterNames = (task, methodResponse, cwmpResponse) ->
if methodResponse.type is 'GetParameterNamesResponse'
return {'parameterNames' : methodResponse.parameterList}
else
cwmpResponse.getParameterNames = [task.parameterPath, if task.nextLevel? task.nextLevel else false]
cwmpResponse.methodRequest = {
type : 'GetParameterNames',
parameterPath : task.parameterPath,
nextLevel : if task.nextLevel? then task.nextLevel else false
}
return
this.getParameterValues = (task, cwmpRequest, cwmpResponse) ->
this.getParameterValues = (task, methodResponse, cwmpResponse) ->
if not task.currentIndex?
task.currentIndex = 0
else if cwmpRequest.getParameterValuesResponse?
else if methodResponse.parameterList?
task.currentIndex = task.nextIndex
task.nextIndex = Math.min(task.currentIndex + BATCH_SIZE, task.parameterNames.length)
names = task.parameterNames.slice(task.currentIndex, task.nextIndex)
if names.length > 0
cwmpResponse.getParameterValues = names
cwmpResponse.methodRequest = {
type : 'GetParameterValues',
parameterNames : names
}
if cwmpRequest.getParameterValuesResponse
return {'parameterValues' : cwmpRequest.getParameterValuesResponse}
if methodResponse.type is 'GetParameterValuesResponse'
return {'parameterValues' : methodResponse.parameterList}
return
this.setParameterValues = (task, cwmpRequest, cwmpResponse) ->
this.setParameterValues = (task, methodResponse, cwmpResponse) ->
if not task.currentIndex?
task.currentIndex = 0
else if cwmpRequest.setParameterValuesResponse?
else if methodResponse.type is 'SetParameterValuesResponse'
prevValues = task.parameterValues.slice(task.currentIndex, task.nextIndex)
task.currentIndex = task.nextIndex
@@ -54,15 +61,20 @@ this.setParameterValues = (task, cwmpRequest, cwmpResponse) ->
values = task.parameterValues.slice(task.currentIndex, task.nextIndex)
if values.length > 0
cwmpResponse.setParameterValues = values
cwmpResponse.methodRequest = {
type : 'SetParameterValues',
parameterList : values
}
if prevValues?
return {'parameterValues' : prevValues}
return
this.reboot = (task, cwmpRequest, cwmpResponse) ->
if not cwmpRequest.reboot
cwmpResponse.reboot = 'reboot'
this.reboot = (task, methodResponse, cwmpResponse) ->
if methodResponse.type isnt 'RebootResponse'
cwmpResponse.methodRequest = {
type : 'Reboot'
}
exports.task = (task, cwmpRequest, cwmpResponse) ->
return this[task.name](task, cwmpRequest, cwmpResponse)
exports.task = (task, methodResponse, cwmpResponse) ->
return this[task.name](task, methodResponse, cwmpResponse)