Some bug fixes in session
This commit is contained in:
1 parent
a254ebbe0c
commit
f6ad84c885
1 file changed
+13
-11
+13
-11
@@ -78,7 +78,10 @@ loadParameters = (sessionData, callback) ->
|
|||||||
# Device not available in database, mark as new
|
# Device not available in database, mark as new
|
||||||
sessionData.new = true
|
sessionData.new = true
|
||||||
loaded = [[[], 99]]
|
loaded = [[[], 99]]
|
||||||
parameters = []
|
parameters = [
|
||||||
|
[['DeviceID', '*'], {exist: sessionData.timestamp}],
|
||||||
|
[['Events', '*'], {exist: sessionData.timestamp}]
|
||||||
|
]
|
||||||
|
|
||||||
vparams = {}
|
vparams = {}
|
||||||
|
|
||||||
@@ -336,7 +339,7 @@ runDeclarations = (sessionData, declarations, callback) ->
|
|||||||
)
|
)
|
||||||
|
|
||||||
for d in declarations
|
for d in declarations
|
||||||
done &= applyDeclaration(sessionData, d[0], d[1], d[2])
|
done = applyDeclaration(sessionData, d[0], d[1], d[2]) && done
|
||||||
|
|
||||||
if sessionData.syncState? and sessionData.syncState.virtualParameters?
|
if sessionData.syncState? and sessionData.syncState.virtualParameters?
|
||||||
provisions = []
|
provisions = []
|
||||||
@@ -361,8 +364,6 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
|
|
||||||
if _declarations?.length
|
if _declarations?.length
|
||||||
sessionData.declarations = []
|
sessionData.declarations = []
|
||||||
sessionData.provisions[0] ?= []
|
|
||||||
sessionData.revisions[0] ?= 0
|
|
||||||
sessionData.doneDeclarations = 0
|
sessionData.doneDeclarations = 0
|
||||||
sessionData.doneProvisions = 0
|
sessionData.doneProvisions = 0
|
||||||
|
|
||||||
@@ -419,7 +420,7 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
inception = 0
|
inception = 0
|
||||||
runDeclarations(sessionData, sessionData.declarations[inception], f = (err, done, provisions) ->
|
runDeclarations(sessionData, sessionData.declarations[inception], f = (err, done, provisions) ->
|
||||||
return callback(err) if err
|
return callback(err) if err
|
||||||
sessionData.doneDeclarations |= 1 << (sessionData.revisions.length - 1)
|
sessionData.doneDeclarations |= 1 << (sessionData.revisions.length - 1) if done
|
||||||
if ++ inception < sessionData.revisions.length
|
if ++ inception < sessionData.revisions.length
|
||||||
return runDeclarations(sessionData, sessionData.declarations[inception], f)
|
return runDeclarations(sessionData, sessionData.declarations[inception], f)
|
||||||
|
|
||||||
@@ -946,8 +947,9 @@ applyDeclaration = (sessionData, path, timestamps, values) ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
decs = device.getAliasDeclarations(path, timestamps.exist ? 1)
|
decs = device.getAliasDeclarations(path, timestamps.exist ? 1)
|
||||||
|
common.addPathMeta(path)
|
||||||
|
|
||||||
if decs.length == 1
|
if (path.wildcard | path.alias) == 0
|
||||||
processDeclaration(sessionData, decs[0][0], timestamps, values)
|
processDeclaration(sessionData, decs[0][0], timestamps, values)
|
||||||
return true
|
return true
|
||||||
|
|
||||||
@@ -960,7 +962,7 @@ applyDeclaration = (sessionData, path, timestamps, values) ->
|
|||||||
|
|
||||||
unpacked = device.unpack(sessionData.deviceData, path)
|
unpacked = device.unpack(sessionData.deviceData, path)
|
||||||
|
|
||||||
if values.exist?
|
if values?.exist?
|
||||||
if Array.isArray(values.exist)
|
if Array.isArray(values.exist)
|
||||||
minInstances = values.exist[0]
|
minInstances = values.exist[0]
|
||||||
maxInstances = values.exist[1]
|
maxInstances = values.exist[1]
|
||||||
@@ -1086,8 +1088,8 @@ rpcResponse = (sessionData, id, rpcRes, callback) ->
|
|||||||
}
|
}
|
||||||
|
|
||||||
timestamp = sessionData.timestamp
|
timestamp = sessionData.timestamp
|
||||||
revision = sessionData.revisions.reduce(((a, b) -> a + (b >> 1)), 0) + 1
|
|
||||||
|
|
||||||
|
revision = sessionData.revisions[sessionData.revisions.length - 1] + 1
|
||||||
v.revision = revision for k, v of sessionData.deviceData.timestamps
|
v.revision = revision for k, v of sessionData.deviceData.timestamps
|
||||||
v.revision = revision for k, v of sessionData.deviceData.values
|
v.revision = revision for k, v of sessionData.deviceData.values
|
||||||
|
|
||||||
@@ -1130,9 +1132,9 @@ rpcResponse = (sessionData, id, rpcRes, callback) ->
|
|||||||
params.sort((a, b) ->
|
params.sort((a, b) ->
|
||||||
al = a[0].length
|
al = a[0].length
|
||||||
bl = b[0].length
|
bl = b[0].length
|
||||||
-- bl if b[0][bl - 1] == '*'
|
++ bl if b[0][bl - 1] == '*'
|
||||||
-- al if a[0][al - 1] == '*'
|
++ al if a[0][al - 1] == '*'
|
||||||
return bl - al
|
return al - bl
|
||||||
)
|
)
|
||||||
|
|
||||||
for p in params
|
for p in params
|
||||||
|
|||||||
Reference in new issue
Block a user