Fix bug updating tags not triggering preset rerun
This commit is contained in:
1 parent
a436f17888
commit
93452d445f
2 files changed
+18
No files matched your search
@@ -356,6 +356,9 @@ applyPresets = (sessionContext) ->
|
|||||||
session.clearProvisions(sessionContext)
|
session.clearProvisions(sessionContext)
|
||||||
return sendAcsRequest(sessionContext)
|
return sendAcsRequest(sessionContext)
|
||||||
|
|
||||||
|
sessionContext.deviceData.timestamps.dirty = 0;
|
||||||
|
sessionContext.deviceData.attributes.dirty = 0;
|
||||||
|
|
||||||
session.rpcRequest(sessionContext, null, (err, fault, id, acsRequest) ->
|
session.rpcRequest(sessionContext, null, (err, fault, id, acsRequest) ->
|
||||||
return throwError(err, sessionContext.httpResponse) if err
|
return throwError(err, sessionContext.httpResponse) if err
|
||||||
|
|
||||||
@@ -374,6 +377,10 @@ applyPresets = (sessionContext) ->
|
|||||||
if whiteList?
|
if whiteList?
|
||||||
return applyPresets(sessionContext)
|
return applyPresets(sessionContext)
|
||||||
|
|
||||||
|
if sessionContext.deviceData.timestamps.dirty > 1 or
|
||||||
|
sessionContext.deviceData.attributes.dirty > 1
|
||||||
|
return applyPresets(sessionContext)
|
||||||
|
|
||||||
sendAcsRequest(sessionContext, id, acsRequest)
|
sendAcsRequest(sessionContext, id, acsRequest)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ class VersionedMap {
|
|||||||
this._sizeDiff = [0];
|
this._sizeDiff = [0];
|
||||||
this._revision = 0;
|
this._revision = 0;
|
||||||
this.map = new Map();
|
this.map = new Map();
|
||||||
|
this.dirty = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -100,6 +101,7 @@ class VersionedMap {
|
|||||||
|
|
||||||
var v = this.map.get(key);
|
var v = this.map.get(key);
|
||||||
if (!v) {
|
if (!v) {
|
||||||
|
this.dirty |= 1 << rev;
|
||||||
for (let i = 0; i < rev; ++ i)
|
for (let i = 0; i < rev; ++ i)
|
||||||
this._sizeDiff[i] -= 1;
|
this._sizeDiff[i] -= 1;
|
||||||
|
|
||||||
@@ -118,6 +120,7 @@ class VersionedMap {
|
|||||||
throw new Error('Cannot modify old revisions');
|
throw new Error('Cannot modify old revisions');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.dirty |= 1 << rev;
|
||||||
if (old === NONEXISTENT)
|
if (old === NONEXISTENT)
|
||||||
++ this._sizeDiff[rev];
|
++ this._sizeDiff[rev];
|
||||||
|
|
||||||
@@ -140,6 +143,7 @@ class VersionedMap {
|
|||||||
if (old === NONEXISTENT)
|
if (old === NONEXISTENT)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
this.dirty |= 1 << rev;
|
||||||
-- this._sizeDiff[rev];
|
-- this._sizeDiff[rev];
|
||||||
v[rev] = NONEXISTENT;
|
v[rev] = NONEXISTENT;
|
||||||
|
|
||||||
@@ -177,6 +181,7 @@ class VersionedMap {
|
|||||||
for (let i = this._sizeDiff.length; i <= r; ++ i)
|
for (let i = this._sizeDiff.length; i <= r; ++ i)
|
||||||
this._sizeDiff[i] = this._sizeDiff[i - 1];
|
this._sizeDiff[i] = this._sizeDiff[i - 1];
|
||||||
|
|
||||||
|
this.dirty |= 1 << r;
|
||||||
rev[r] = revisions[k];
|
rev[r] = revisions[k];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,6 +189,8 @@ class VersionedMap {
|
|||||||
for (let i = 0; i < minKey; ++ i)
|
for (let i = 0; i < minKey; ++ i)
|
||||||
-- this._sizeDiff[i];
|
-- this._sizeDiff[i];
|
||||||
|
|
||||||
|
this.dirty |= del;
|
||||||
|
|
||||||
for (let i = 0; del > 0; del >>= 1, ++ i)
|
for (let i = 0; del > 0; del >>= 1, ++ i)
|
||||||
if (del & 1)
|
if (del & 1)
|
||||||
rev[i] = NONEXISTENT;
|
rev[i] = NONEXISTENT;
|
||||||
@@ -233,6 +240,10 @@ class VersionedMap {
|
|||||||
this._sizeDiff[revision] = this._sizeDiff[this._sizeDiff.length - 1];
|
this._sizeDiff[revision] = this._sizeDiff[this._sizeDiff.length - 1];
|
||||||
this._sizeDiff.splice(revision + 1, this._sizeDiff.length);
|
this._sizeDiff.splice(revision + 1, this._sizeDiff.length);
|
||||||
|
|
||||||
|
let d = this.dirty >> revision;
|
||||||
|
this.dirty = this.dirty ^ (d << revision);
|
||||||
|
this.dirty |= (+!!d) << revision;
|
||||||
|
|
||||||
for (let pair of this.map) {
|
for (let pair of this.map) {
|
||||||
let k = pair[0];
|
let k = pair[0];
|
||||||
let v = pair[1];
|
let v = pair[1];
|
||||||
|
|||||||
Reference in new issue
Block a user