Commit vparam after its declarations are applied
This commit is contained in:
1 parent
eb812e9754
commit
a735f0d9e7
1 file changed
+24
-26
+24
-26
@@ -296,7 +296,7 @@ addProvisions = (sessionContext, channel, provisions) ->
|
|||||||
delete sessionContext.syncState
|
delete sessionContext.syncState
|
||||||
delete sessionContext.rpcRequest
|
delete sessionContext.rpcRequest
|
||||||
sessionContext.declarations = []
|
sessionContext.declarations = []
|
||||||
sessionContext.doneProvisions = 0
|
sessionContext.provisionsRet = []
|
||||||
if sessionContext.revisions[sessionContext.revisions.length - 1] > 0
|
if sessionContext.revisions[sessionContext.revisions.length - 1] > 0
|
||||||
sessionContext.deviceData.timestamps.collapse(1)
|
sessionContext.deviceData.timestamps.collapse(1)
|
||||||
sessionContext.deviceData.attributes.collapse(1)
|
sessionContext.deviceData.attributes.collapse(1)
|
||||||
@@ -344,7 +344,7 @@ clearProvisions = (sessionContext) ->
|
|||||||
sessionContext.virtualParameters = []
|
sessionContext.virtualParameters = []
|
||||||
sessionContext.channels = {}
|
sessionContext.channels = {}
|
||||||
sessionContext.declarations = []
|
sessionContext.declarations = []
|
||||||
sessionContext.doneProvisions = 0
|
sessionContext.provisionsRet = []
|
||||||
sessionContext.revisions = [0]
|
sessionContext.revisions = [0]
|
||||||
sessionContext.extensionsCache = {}
|
sessionContext.extensionsCache = {}
|
||||||
|
|
||||||
@@ -407,32 +407,18 @@ runVirtualParameters = (sessionContext, provisions, startRevision, endRevision,
|
|||||||
done &&= _done
|
done &&= _done
|
||||||
allDeclarations[j] = _declarations or []
|
allDeclarations[j] = _declarations or []
|
||||||
allClear[j] = _clear or []
|
allClear[j] = _clear or []
|
||||||
virtualParameterUpdates[j] = _returnValue if _done
|
virtualParameterUpdates[j] = JSON.parse(JSON.stringify(_returnValue)) if _done
|
||||||
|
|
||||||
if (counter -= 2) == 1
|
if (counter -= 2) == 1
|
||||||
toClear = null
|
|
||||||
if done
|
|
||||||
for vpu, i in virtualParameterUpdates
|
|
||||||
toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear)
|
|
||||||
|
|
||||||
clear(sessionContext, toClear, (err) ->
|
|
||||||
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
|
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
|
||||||
allClear = Array.prototype.concat.apply([], allClear)
|
allClear = Array.prototype.concat.apply([], allClear)
|
||||||
return callback(err, null, done, allDeclarations, allClear)
|
return callback(null, null, (if done then virtualParameterUpdates else null), allDeclarations, allClear)
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if (counter -= 2) == 1
|
if (counter -= 2) == 1
|
||||||
toClear = null
|
|
||||||
if done
|
|
||||||
for vpu, i in virtualParameterUpdates
|
|
||||||
toClear = commitVirtualParameter(sessionContext, provisions[i], vpu, toClear)
|
|
||||||
|
|
||||||
clear(sessionContext, toClear, (err) ->
|
|
||||||
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
|
allDeclarations = Array.prototype.concat.apply([], allDeclarations)
|
||||||
allClear = Array.prototype.concat.apply([], allClear)
|
allClear = Array.prototype.concat.apply([], allClear)
|
||||||
return callback(err, null, done, allDeclarations, allClear)
|
return callback(null, null, (if done then virtualParameterUpdates else null), allDeclarations, allClear)
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
runDeclarations = (sessionContext, declarations) ->
|
runDeclarations = (sessionContext, declarations) ->
|
||||||
@@ -564,7 +550,7 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
if sessionContext.virtualParameters.length == 0 and
|
if sessionContext.virtualParameters.length == 0 and
|
||||||
sessionContext.declarations.length == 0 and
|
sessionContext.declarations.length == 0 and
|
||||||
not _declarations?.length and
|
not _declarations?.length and
|
||||||
(sessionContext.doneProvisions or sessionContext.provisions.length == 0)
|
sessionContext.provisions.length == 0
|
||||||
return callback()
|
return callback()
|
||||||
|
|
||||||
if sessionContext.declarations.length <= sessionContext.virtualParameters.length
|
if sessionContext.declarations.length <= sessionContext.virtualParameters.length
|
||||||
@@ -580,7 +566,7 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
run = runVirtualParameters
|
run = runVirtualParameters
|
||||||
provisions = sessionContext.virtualParameters[inception - 1]
|
provisions = sessionContext.virtualParameters[inception - 1]
|
||||||
|
|
||||||
return run(sessionContext, provisions, sessionContext.revisions[inception - 1] or 0, sessionContext.revisions[inception], (err, fault, done, decs, toClear) ->
|
return run(sessionContext, provisions, sessionContext.revisions[inception - 1] or 0, sessionContext.revisions[inception], (err, fault, ret, decs, toClear) ->
|
||||||
return callback(err) if err
|
return callback(err) if err
|
||||||
|
|
||||||
if fault
|
if fault
|
||||||
@@ -588,7 +574,7 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
return callback(null, fault)
|
return callback(null, fault)
|
||||||
|
|
||||||
sessionContext.declarations.push(decs)
|
sessionContext.declarations.push(decs)
|
||||||
sessionContext.doneProvisions |= 1 << inception if done
|
sessionContext.provisionsRet[inception] = ret
|
||||||
|
|
||||||
for d in decs
|
for d in decs
|
||||||
for ad in device.getAliasDeclarations(d[0], 1)
|
for ad in device.getAliasDeclarations(d[0], 1)
|
||||||
@@ -784,18 +770,30 @@ rpcRequest = (sessionContext, _declarations, callback) ->
|
|||||||
sessionContext.declarations.pop()
|
sessionContext.declarations.pop()
|
||||||
sessionContext.syncState.virtualParameterDeclarations.pop()
|
sessionContext.syncState.virtualParameterDeclarations.pop()
|
||||||
|
|
||||||
if sessionContext.doneProvisions & (2 << (sessionContext.virtualParameters.length - 1))
|
ret = sessionContext.provisionsRet.splice(inception)[0]
|
||||||
doneProvisions = sessionContext.virtualParameters.pop()
|
if not ret
|
||||||
|
return rpcRequest(sessionContext, null, callback)
|
||||||
|
|
||||||
sessionContext.revisions.pop()
|
sessionContext.revisions.pop()
|
||||||
sessionContext.doneProvisions &= (2 << sessionContext.virtualParameters.length) - 1
|
rev = sessionContext.revisions[sessionContext.revisions.length - 1] or 0
|
||||||
rev = sessionContext.revisions[sessionContext.revisions.length - 1]
|
|
||||||
sessionContext.deviceData.timestamps.collapse(rev + 1)
|
sessionContext.deviceData.timestamps.collapse(rev + 1)
|
||||||
sessionContext.deviceData.attributes.collapse(rev + 1)
|
sessionContext.deviceData.attributes.collapse(rev + 1)
|
||||||
for k of sessionContext.extensionsCache
|
for k of sessionContext.extensionsCache
|
||||||
if rev < Number(k.split(':', 1)[0])
|
if rev < Number(k.split(':', 1)[0])
|
||||||
delete sessionContext.extensionsCache[k]
|
delete sessionContext.extensionsCache[k]
|
||||||
|
|
||||||
|
vparams = sessionContext.virtualParameters.pop()
|
||||||
|
|
||||||
|
if not vparams
|
||||||
|
return callback()
|
||||||
|
|
||||||
|
toClear = null
|
||||||
|
for vpu, i in ret
|
||||||
|
toClear = commitVirtualParameter(sessionContext, vparams[i], vpu, toClear)
|
||||||
|
|
||||||
|
clear(sessionContext, toClear, (err) ->
|
||||||
return rpcRequest(sessionContext, null, callback)
|
return rpcRequest(sessionContext, null, callback)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Simple algorithm to estimate GPN count in a set of patterns used
|
# Simple algorithm to estimate GPN count in a set of patterns used
|
||||||
|
|||||||
Reference in new issue
Block a user