A number of fixes in sandbox and declaration processing
This commit is contained in:
1 parent
3b987cc0cc
commit
f9c5272ce0
5 files changed
+100
-112
No files matched your search
+1
-4
@@ -209,8 +209,6 @@ applyPresets = (currentRequest) ->
|
|||||||
|
|
||||||
session.rpcRequest(currentRequest.sessionData, null, (err, id, rpcRequest) ->
|
session.rpcRequest(currentRequest.sessionData, null, (err, id, rpcRequest) ->
|
||||||
throw err if err
|
throw err if err
|
||||||
if not rpcRequest?
|
|
||||||
session.clearProvisions(currentRequest.sessionData)
|
|
||||||
sendRpcRequest(currentRequest, id, rpcRequest)
|
sendRpcRequest(currentRequest, id, rpcRequest)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -235,12 +233,11 @@ nextRpc = (currentRequest) ->
|
|||||||
currentRequest.sessionData.tasks.splice(j, 1)
|
currentRequest.sessionData.tasks.splice(j, 1)
|
||||||
break
|
break
|
||||||
|
|
||||||
session.clearProvisions(currentRequest.sessionData)
|
|
||||||
|
|
||||||
for task in currentRequest.sessionData.tasks
|
for task in currentRequest.sessionData.tasks
|
||||||
# Delete if expired
|
# Delete if expired
|
||||||
if task.expiry <= currentRequest.sessionData.timestamp
|
if task.expiry <= currentRequest.sessionData.timestamp
|
||||||
util.log("#{currentRequest.sessionData.deviceId}: Task is expired #{task.name}(#{task._id})")
|
util.log("#{currentRequest.sessionData.deviceId}: Task is expired #{task.name}(#{task._id})")
|
||||||
|
currentRequest.sessionData.doneTasks ?= []
|
||||||
currentRequest.sessionData.doneTasks.push(String(task._id))
|
currentRequest.sessionData.doneTasks.push(String(task._id))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ script = require("#{process.argv[2]}/#{process.argv[3]}")
|
|||||||
|
|
||||||
process.on('message', (message) ->
|
process.on('message', (message) ->
|
||||||
script[message[1][0]](message[1].slice(1), (err, res) ->
|
script[message[1][0]](message[1].slice(1), (err, res) ->
|
||||||
throw err if err
|
process.send([message[0], err, res])
|
||||||
process.send([message[0], res])
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -30,7 +30,7 @@ queue = {}
|
|||||||
messageHandler = (message) ->
|
messageHandler = (message) ->
|
||||||
func = queue[message[0]]
|
func = queue[message[0]]
|
||||||
delete queue[message[0]]
|
delete queue[message[0]]
|
||||||
func(null, message[1])
|
func(message[1], message[2])
|
||||||
|
|
||||||
|
|
||||||
run = (args, callback) ->
|
run = (args, callback) ->
|
||||||
|
|||||||
+54
-65
@@ -132,35 +132,34 @@ function declare(path, timestamps, values) {
|
|||||||
|
|
||||||
let parsedPath = common.parsePath(path);
|
let parsedPath = common.parsePath(path);
|
||||||
|
|
||||||
sandbox.declarations[path] = sandbox.declarations[path] || [parsedPath, 1, {}, null, {}];
|
let declaration = [parsedPath, 1];
|
||||||
|
|
||||||
let attrs = {};
|
let attrs = {};
|
||||||
for (let attrName in timestamps) {
|
if (timestamps)
|
||||||
if (attrName === "path") {
|
for (let attrName in timestamps)
|
||||||
if (timestamps.path > sandbox.declarations[path][1])
|
if (attrName === "path")
|
||||||
sandbox.declarations[path][1] = timestamps.path;
|
declaration[1] = timestamps.path;
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
attrs[attrName] = 1;
|
attrs[attrName] = 1;
|
||||||
if (!(timestamps[attrName] <= sandbox.declarations[path][2][attrName]))
|
declaration[2] = declaration[2] || {};
|
||||||
sandbox.declarations[path][2][attrName] = timestamps[attrName];
|
declaration[2][attrName] = timestamps[attrName];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (values) {
|
if (values)
|
||||||
for (let attrName in values) {
|
for (let attrName in values)
|
||||||
if (attrName === "path")
|
if (attrName === "path")
|
||||||
sandbox.declarations[path][3] = values.path;
|
declaration[3] = values.path;
|
||||||
else {
|
else {
|
||||||
attrs[attrName] = 1;
|
attrs[attrName] = 1;
|
||||||
if (attrName === 'value' && !Array.isArray(values[attrName]))
|
declaration[4] = declaration[4] || {};
|
||||||
sandbox.declarations[path][4].value = [values[attrName]];
|
if (attrName === "value" && !Array.isArray(values.value))
|
||||||
|
declaration[4].value = [values.value];
|
||||||
else
|
else
|
||||||
sandbox.declarations[path][4].value = values[attrName];
|
declaration[4][attrName] = values[attrName];
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sandbox.declarations.push(declaration);
|
||||||
|
|
||||||
return new ParameterWrapper(parsedPath, Object.keys(attrs));
|
return new ParameterWrapper(parsedPath, Object.keys(attrs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,7 +211,7 @@ function run(script, globals, timestamp, deviceData, extensionsCache, startRevis
|
|||||||
sandbox.revision = startRevision;
|
sandbox.revision = startRevision;
|
||||||
sandbox.maxRevision = maxRevision;
|
sandbox.maxRevision = maxRevision;
|
||||||
sandbox.uncommitted = false;
|
sandbox.uncommitted = false;
|
||||||
sandbox.declarations = {};
|
sandbox.declarations = [];
|
||||||
sandbox.extensions = {};
|
sandbox.extensions = {};
|
||||||
sandbox.clear = null;
|
sandbox.clear = null;
|
||||||
|
|
||||||
@@ -222,59 +221,49 @@ function run(script, globals, timestamp, deviceData, extensionsCache, startRevis
|
|||||||
for (let n in globals)
|
for (let n in globals)
|
||||||
sandbox.context[n] = globals[n];
|
sandbox.context[n] = globals[n];
|
||||||
|
|
||||||
|
let ret, status;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let ret = script.runInContext(sandbox.context, {displayErrors: false});
|
ret = script.runInContext(sandbox.context, {displayErrors: false});
|
||||||
|
status = 0;
|
||||||
let declarations = [];
|
|
||||||
for (let p in sandbox.declarations)
|
|
||||||
declarations.push(sandbox.declarations[p]);
|
|
||||||
|
|
||||||
let counter = 1;
|
|
||||||
for (let key in sandbox.extensions) {
|
|
||||||
++ counter;
|
|
||||||
extensions.run(sandbox.extensions[key], function(err, res) {
|
|
||||||
sandbox.extensionsCache[key] = res;
|
|
||||||
if (-- counter === 0)
|
|
||||||
return callback(null, sandbox.clear, declarations, true, ret);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (-- counter === 0)
|
|
||||||
return callback(null, sandbox.clear, declarations, true, ret);
|
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
if (err === COMMIT) {
|
if (err === COMMIT)
|
||||||
let declarations = [];
|
status = 1;
|
||||||
for (let p in sandbox.declarations)
|
else if (err === EXT)
|
||||||
declarations.push(sandbox.declarations[p]);
|
status = 2;
|
||||||
|
|
||||||
let counter = 1;
|
|
||||||
for (let key in sandbox.extensions) {
|
|
||||||
++ counter;
|
|
||||||
extensions.run(sandbox.extensions[key], function(err, res) {
|
|
||||||
sandbox.extensionsCache[key] = res;
|
|
||||||
if (-- counter === 0)
|
|
||||||
return callback(null, sandbox.clear, declarations, false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (-- counter === 0)
|
|
||||||
return callback(null, sandbox.clear, declarations, false);
|
|
||||||
}
|
|
||||||
else if (err === EXT) {
|
|
||||||
let counter = 1;
|
|
||||||
for (let key in sandbox.extensions) {
|
|
||||||
++ counter;
|
|
||||||
extensions.run(sandbox.extensions[key], function(err, res) {
|
|
||||||
sandbox.extensionsCache[key] = res;
|
|
||||||
if (-- counter === 0)
|
|
||||||
return run(script, globals, timestamp, deviceData, extensionsCache, startRevision, maxRevision, callback);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (-- counter === 0)
|
|
||||||
return run(script, globals, timestamp, deviceData, extensionsCache, startRevision, maxRevision, callback);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let ext = sandbox.extensions;
|
||||||
|
let decs = sandbox.declarations;
|
||||||
|
let clr = sandbox.clear;
|
||||||
|
let extCache = sandbox.extensionsCache;
|
||||||
|
let args = arguments;
|
||||||
|
|
||||||
|
let counter = 1;
|
||||||
|
for (let key in sandbox.extensions) {
|
||||||
|
++ counter;
|
||||||
|
extensions.run(sandbox.extensions[key], function(err, res) {
|
||||||
|
if (err && counter > 0) {
|
||||||
|
counter = 0;
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
extCache[key] = res;
|
||||||
|
if (-- counter === 0)
|
||||||
|
if (status === 2)
|
||||||
|
return run.apply(null, args);
|
||||||
|
else
|
||||||
|
return callback(null, clr, decs, status === 0, ret);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-- counter === 0)
|
||||||
|
if (status === 2)
|
||||||
|
return run.apply(null, args);
|
||||||
|
else
|
||||||
|
return callback(null, clr, decs, status === 0, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+43
-40
@@ -157,13 +157,17 @@ inform = (sessionData, rpcReq, callback) ->
|
|||||||
|
|
||||||
|
|
||||||
addProvisions = (sessionData, channel, provisions) ->
|
addProvisions = (sessionData, channel, provisions) ->
|
||||||
sessionData.declarations = []
|
if sessionData.revisions[0] > 0
|
||||||
sessionData.provisions.length = 1
|
sessionData.deviceData.timestamps.collapse(1)
|
||||||
sessionData.doneProvisions = 0
|
sessionData.deviceData.attributes.collapse(1)
|
||||||
sessionData.doneDeclarations = 0
|
|
||||||
|
|
||||||
|
delete sessionData.syncState
|
||||||
|
sessionData.declarations = []
|
||||||
|
sessionData.doneProvisions = 0
|
||||||
sessionData.provisions[0] ?= []
|
sessionData.provisions[0] ?= []
|
||||||
sessionData.revisions[0] ?= 0
|
sessionData.provisions.length = 1
|
||||||
|
sessionData.revisions = [0]
|
||||||
|
sessionData.extensionsCache = {}
|
||||||
|
|
||||||
for provision, i in provisions
|
for provision, i in provisions
|
||||||
# Remove duplicate provisions
|
# Remove duplicate provisions
|
||||||
@@ -175,34 +179,25 @@ addProvisions = (sessionData, channel, provisions) ->
|
|||||||
sessionData.provisions[0].push(provision)
|
sessionData.provisions[0].push(provision)
|
||||||
sessionData.channels.push(channel)
|
sessionData.channels.push(channel)
|
||||||
|
|
||||||
if sessionData.revisions.length > 1 or sessionData.revisions[0] > 0
|
|
||||||
v.collapse(1) for k, v of sessionData.deviceData.timestamps
|
|
||||||
v.collapse(1) for k, v of sessionData.deviceData.attributes
|
|
||||||
sessionData.rpcCount = 0
|
|
||||||
sessionData.revisions = [0]
|
|
||||||
sessionData.extensionsCache = {}
|
|
||||||
|
|
||||||
|
|
||||||
clearProvisions = (sessionData) ->
|
clearProvisions = (sessionData) ->
|
||||||
|
if sessionData.revisions[sessionData.revisions.length - 1] > 0
|
||||||
|
sessionData.deviceData.timestamps.collapse(1)
|
||||||
|
sessionData.deviceData.attributes.collapse(1)
|
||||||
|
|
||||||
delete sessionData.syncState
|
delete sessionData.syncState
|
||||||
sessionData.provisions = [[]]
|
sessionData.provisions = []
|
||||||
sessionData.channels = []
|
sessionData.channels = []
|
||||||
sessionData.declarations = []
|
sessionData.declarations = []
|
||||||
sessionData.doneProvisions = 0
|
sessionData.doneProvisions = 0
|
||||||
sessionData.doneDeclarations = 0
|
sessionData.revisions = []
|
||||||
if sessionData.revisions.length > 1 or sessionData.revisions[0] > 0
|
|
||||||
sessionData.deviceData.timestamps.collapse(1)
|
|
||||||
sessionData.deviceData.attributes.collapse(1)
|
|
||||||
sessionData.rpcCount = 0
|
|
||||||
sessionData.revisions = [0]
|
|
||||||
sessionData.extensionsCache = {}
|
sessionData.extensionsCache = {}
|
||||||
|
|
||||||
|
|
||||||
runProvisions = (sessionData, provisions, startRevision, endRevision, callback) ->
|
runProvisions = (sessionData, provisions, startRevision, endRevision, callback) ->
|
||||||
done = true
|
done = true
|
||||||
_extensions = []
|
|
||||||
_clear = []
|
|
||||||
allDeclarations = []
|
allDeclarations = []
|
||||||
|
allClear = []
|
||||||
counter = 1
|
counter = 1
|
||||||
for provision in provisions
|
for provision in provisions
|
||||||
if not sessionData.cache.provisions[provision[0]]?
|
if not sessionData.cache.provisions[provision[0]]?
|
||||||
@@ -259,22 +254,26 @@ runProvisions = (sessionData, provisions, startRevision, endRevision, callback)
|
|||||||
return
|
return
|
||||||
|
|
||||||
done &&= _done
|
done &&= _done
|
||||||
|
|
||||||
|
if _declarations
|
||||||
allDeclarations = allDeclarations.concat(_declarations)
|
allDeclarations = allDeclarations.concat(_declarations)
|
||||||
|
|
||||||
|
if _clear
|
||||||
|
allClear = allClear.concat(_clear)
|
||||||
|
|
||||||
if counter == 0
|
if counter == 0
|
||||||
return callback(null, done, allDeclarations, _clear)
|
return callback(null, done, allDeclarations, allClear)
|
||||||
)
|
)
|
||||||
|
|
||||||
if -- counter == 0
|
if -- counter == 0
|
||||||
return callback(null, done, allDeclarations, _clear)
|
return callback(null, done, allDeclarations, allClear)
|
||||||
|
|
||||||
|
|
||||||
runVirtualParameters = (sessionData, provisions, startRevision, endRevision, callback) ->
|
runVirtualParameters = (sessionData, provisions, startRevision, endRevision, callback) ->
|
||||||
done = true
|
done = true
|
||||||
decs = []
|
|
||||||
virtualParameterUpdates = []
|
virtualParameterUpdates = []
|
||||||
_extensions = []
|
allDeclarations = []
|
||||||
_clear = []
|
allClear = []
|
||||||
counter = 1
|
counter = 1
|
||||||
for provision in provisions
|
for provision in provisions
|
||||||
++ counter
|
++ counter
|
||||||
@@ -291,7 +290,12 @@ runVirtualParameters = (sessionData, provisions, startRevision, endRevision, cal
|
|||||||
return
|
return
|
||||||
|
|
||||||
done &&= _done
|
done &&= _done
|
||||||
decs = decs.concat(_declarations)
|
|
||||||
|
if _declarations
|
||||||
|
allDeclarations = allDeclarations.concat(_declarations)
|
||||||
|
|
||||||
|
if _clear
|
||||||
|
allClear = allClear.concat(_clear)
|
||||||
|
|
||||||
if _done
|
if _done
|
||||||
virtualParameterUpdates.push(_returnValue)
|
virtualParameterUpdates.push(_returnValue)
|
||||||
@@ -303,7 +307,7 @@ runVirtualParameters = (sessionData, provisions, startRevision, endRevision, cal
|
|||||||
toClear = commitVirtualParameter(sessionData, provisions[i], vpu, toClear)
|
toClear = commitVirtualParameter(sessionData, provisions[i], vpu, toClear)
|
||||||
|
|
||||||
clear(sessionData, toClear, (err) ->
|
clear(sessionData, toClear, (err) ->
|
||||||
return callback(err, done, decs, _clear)
|
return callback(err, done, allDeclarations, allClear)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -314,7 +318,7 @@ runVirtualParameters = (sessionData, provisions, startRevision, endRevision, cal
|
|||||||
toClear = commitVirtualParameter(sessionData, provisions[i], vpu, toClear)
|
toClear = commitVirtualParameter(sessionData, provisions[i], vpu, toClear)
|
||||||
|
|
||||||
clear(sessionData, toClear, (err) ->
|
clear(sessionData, toClear, (err) ->
|
||||||
return callback(err, done, decs, _clear)
|
return callback(err, done, allDeclarations, allClear)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -354,7 +358,7 @@ runDeclarations = (sessionData, declarations) ->
|
|||||||
if (path.alias | path.wildcard) & 1 or path[0] == 'Reboot'
|
if (path.alias | path.wildcard) & 1 or path[0] == 'Reboot'
|
||||||
sessionData.deviceData.paths.add(['Reboot'])
|
sessionData.deviceData.paths.add(['Reboot'])
|
||||||
|
|
||||||
if (path.aliasa | path.wildcard) & 1 or path[0] == 'FactoryReset'
|
if (path.alias | path.wildcard) & 1 or path[0] == 'FactoryReset'
|
||||||
sessionData.deviceData.paths.add(['FactoryReset'])
|
sessionData.deviceData.paths.add(['FactoryReset'])
|
||||||
|
|
||||||
if path.alias
|
if path.alias
|
||||||
@@ -411,7 +415,7 @@ runDeclarations = (sessionData, declarations) ->
|
|||||||
else
|
else
|
||||||
minInstances = maxInstances = declaration[3]
|
minInstances = maxInstances = declaration[3]
|
||||||
|
|
||||||
parent = sessionData.deviceData.paths.add(path.slice(0, -1))
|
parent = common.addPathMeta(path.slice(0, -1))
|
||||||
|
|
||||||
if Array.isArray(path[path.length - 1])
|
if Array.isArray(path[path.length - 1])
|
||||||
keys = {}
|
keys = {}
|
||||||
@@ -421,12 +425,14 @@ runDeclarations = (sessionData, declarations) ->
|
|||||||
keys = {}
|
keys = {}
|
||||||
|
|
||||||
if ((path.wildcard | path.alias) & ((1 << (path.length - 1)) - 1)) == 0
|
if ((path.wildcard | path.alias) & ((1 << (path.length - 1)) - 1)) == 0
|
||||||
|
parent = sessionData.deviceData.paths.add(parent)
|
||||||
unpacked ?= device.unpack(sessionData.device, path)
|
unpacked ?= device.unpack(sessionData.device, path)
|
||||||
processInstances(sessionData, parent, unpacked, keys, minInstances, maxInstances)
|
processInstances(sessionData, parent, unpacked, keys, minInstances, maxInstances)
|
||||||
else
|
else
|
||||||
parentsUnpacked = device.unpack(sessionData.deviceData, parent)
|
parentsUnpacked = device.unpack(sessionData.deviceData, parent)
|
||||||
for parent in parentsUnpacked
|
for parent in parentsUnpacked
|
||||||
processInstances(sessionData, parent, device.unpack(sessionData.deviceData, parent.concat([path[parent.length]])), keys, minInstances, maxInstances)
|
parent = sessionData.deviceData.paths.add(parent)
|
||||||
|
processInstances(sessionData, parent, device.unpack(sessionData.deviceData, common.addPathMeta(parent.concat([path[parent.length]]))), keys, minInstances, maxInstances)
|
||||||
|
|
||||||
return processDeclarations(sessionData, allDeclareTimestamps, allDeclareAttributeTimestamps, allDeclareAttributeValues)
|
return processDeclarations(sessionData, allDeclareTimestamps, allDeclareAttributeTimestamps, allDeclareAttributeValues)
|
||||||
|
|
||||||
@@ -437,6 +443,9 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
|
|
||||||
if sessionData.declarations.length < sessionData.provisions.length
|
if sessionData.declarations.length < sessionData.provisions.length
|
||||||
inception = sessionData.declarations.length
|
inception = sessionData.declarations.length
|
||||||
|
revision = sessionData.revisions[inception] + 1
|
||||||
|
sessionData.deviceData.timestamps.revision = revision
|
||||||
|
sessionData.deviceData.attributes.revision = revision
|
||||||
run = if inception == 0 then runProvisions else runVirtualParameters
|
run = if inception == 0 then runProvisions else runVirtualParameters
|
||||||
|
|
||||||
return run(sessionData, sessionData.provisions[inception], sessionData.revisions[inception - 1] ? 0, sessionData.revisions[inception], (err, done, decs, toClear) ->
|
return run(sessionData, sessionData.provisions[inception], sessionData.revisions[inception - 1] ? 0, sessionData.revisions[inception], (err, done, decs, toClear) ->
|
||||||
@@ -474,7 +483,6 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
return rpcRequest(sessionData, null, callback)
|
return rpcRequest(sessionData, null, callback)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if (sessionData.syncState?.virtualParameterDeclarations?.length or 0) < sessionData.declarations.length
|
if (sessionData.syncState?.virtualParameterDeclarations?.length or 0) < sessionData.declarations.length
|
||||||
inception = sessionData.syncState?.virtualParameterDeclarations?.length or 0
|
inception = sessionData.syncState?.virtualParameterDeclarations?.length or 0
|
||||||
vpd = runDeclarations(sessionData, sessionData.declarations[inception])
|
vpd = runDeclarations(sessionData, sessionData.declarations[inception])
|
||||||
@@ -508,10 +516,6 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
if not sessionData.syncState?
|
if not sessionData.syncState?
|
||||||
return callback()
|
return callback()
|
||||||
|
|
||||||
revision = sessionData.revisions[sessionData.revisions.length - 1] + 1
|
|
||||||
sessionData.deviceData.timestamps.revision = revision
|
|
||||||
sessionData.deviceData.attributes.revision = revision
|
|
||||||
|
|
||||||
inception = sessionData.declarations.length - 1
|
inception = sessionData.declarations.length - 1
|
||||||
|
|
||||||
provisions = generateGetVirtualParameterProvisions(sessionData, sessionData.syncState.virtualParameterDeclarations[inception])
|
provisions = generateGetVirtualParameterProvisions(sessionData, sessionData.syncState.virtualParameterDeclarations[inception])
|
||||||
@@ -586,8 +590,7 @@ rpcRequest = (sessionData, _declarations, callback) ->
|
|||||||
sessionData.deviceData.timestamps.collapse(rev + 1)
|
sessionData.deviceData.timestamps.collapse(rev + 1)
|
||||||
sessionData.deviceData.attributes.collapse(rev + 1)
|
sessionData.deviceData.attributes.collapse(rev + 1)
|
||||||
for k of sessionData.extensionsCache
|
for k of sessionData.extensionsCache
|
||||||
n = Number(k.split(':', 1)[0])
|
if rev < Number(k.split(':', 1)[0])
|
||||||
if n > rev
|
|
||||||
delete sessionData.extensionsCache[k]
|
delete sessionData.extensionsCache[k]
|
||||||
|
|
||||||
sessionData.syncState.virtualParameterDeclarations.length = sessionData.declarations.length
|
sessionData.syncState.virtualParameterDeclarations.length = sessionData.declarations.length
|
||||||
@@ -747,7 +750,7 @@ generateSetRpcRequest = (sessionData) ->
|
|||||||
# Delete instance
|
# Delete instance
|
||||||
iter = syncState.instancesToDelete.values()
|
iter = syncState.instancesToDelete.values()
|
||||||
while instances = iter.next().value
|
while instances = iter.next().value
|
||||||
if instance = instances.values().next().value and
|
if (instance = instances.values().next().value) and
|
||||||
sessionData.deviceData.attributes.has(instance)
|
sessionData.deviceData.attributes.has(instance)
|
||||||
return {
|
return {
|
||||||
type: 'DeleteObject'
|
type: 'DeleteObject'
|
||||||
|
|||||||
Reference in new issue
Block a user