Propagate Status/Error events from global config nodes

This commit is contained in:
Nick O'Leary 2019-01-25 15:46:39 +00:00
parent c99b35428b
commit 4baaaa8d59
No known key found for this signature in database
GPG Key ID: 4F2157149161A6C9
1 changed files with 75 additions and 52 deletions

View File

@ -327,14 +327,14 @@ class Flow {
* @param {Node} reportingNode The node emitting the status event.
* This could be a subflow instance node when the status
* is being delegated up.
* @param {boolean} muteStatus Whether to emit the status event
* @param {boolean} muteStatusEvent Whether to emit the status event
* @return {[type]} [description]
*/
handleStatus(node,statusMessage,reportingNode,muteStatus) {
handleStatus(node,statusMessage,reportingNode,muteStatusEvent) {
if (!reportingNode) {
reportingNode = node;
}
if (!muteStatus) {
if (!muteStatusEvent) {
events.emit("node-status",{
id: node.id,
status:statusMessage
@ -343,6 +343,16 @@ class Flow {
let handled = false;
if (this.id === 'global' && node.users) {
// This is a global config node
// Delegate status to any nodes using this config node
for (let userNode in node.users) {
if (node.users.hasOwnProperty(userNode)) {
node.users[userNode]._flow.handleStatus(node,statusMessage,node.users[userNode],true);
}
}
handled = true;
} else {
this.statusNodes.forEach(function(targetStatusNode) {
if (targetStatusNode.scope && targetStatusNode.scope.indexOf(reportingNode.id) === -1) {
return;
@ -363,6 +373,7 @@ class Flow {
targetStatusNode.receive(message);
handled = true;
});
}
return handled;
}
@ -392,7 +403,18 @@ class Flow {
}
}
}
var handled = false;
let handled = false;
if (this.id === 'global' && node.users) {
// This is a global config node
// Delegate status to any nodes using this config node
for (let userNode in node.users) {
if (node.users.hasOwnProperty(userNode)) {
node.users[userNode]._flow.handleError(node,logMessage,msg,node.users[userNode]);
}
}
handled = true;
} else {
this.catchNodes.forEach(function(targetCatchNode) {
if (targetCatchNode.scope && targetCatchNode.scope.indexOf(reportingNode.id) === -1) {
return;
@ -421,6 +443,7 @@ class Flow {
targetCatchNode.receive(errorMessage);
handled = true;
});
}
return handled;
}