1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Support msg.rate in delay node

This commit is contained in:
Kazuhito Yokoi 2019-09-25 17:42:12 +09:00
parent 6f88894598
commit 8bc81c0d32

View File

@ -88,6 +88,17 @@ module.exports = function(RED) {
}; };
} }
var sendMsgFromBuffer = function() {
if (node.buffer.length === 0) {
clearInterval(node.intervalID);
node.intervalID = -1;
}
if (node.buffer.length > 0) {
node.send(node.buffer.shift());
}
node.reportDepth();
}
var clearDelayList = function(s) { var clearDelayList = function(s) {
for (var i=0; i<node.idList.length; i++ ) { node.idList[i].clear(); } for (var i=0; i<node.idList.length; i++ ) { node.idList[i].clear(); }
node.idList = []; node.idList = [];
@ -155,27 +166,29 @@ module.exports = function(RED) {
node.on("input", function(msg) { node.on("input", function(msg) {
if (!node.drop) { if (!node.drop) {
if (node.intervalID !== -1) { if (node.intervalID !== -1) {
if (msg.hasOwnProperty("rate") && node.rate !== msg.rate) {
node.rate = msg.rate;
clearInterval(node.intervalID);
node.intervalID = setInterval(sendMsgFromBuffer, node.rate);
}
if (!msg.hasOwnProperty("flush")) { if (!msg.hasOwnProperty("flush")) {
node.buffer.push(msg); node.buffer.push(msg);
node.reportDepth(); node.reportDepth();
} }
} }
else { else {
if (msg.hasOwnProperty("rate")) {
node.rate = msg.rate;
}
node.send(msg); node.send(msg);
node.reportDepth(); node.reportDepth();
node.intervalID = setInterval(function() { node.intervalID = setInterval(sendMsgFromBuffer, node.rate);
if (node.buffer.length === 0) {
clearInterval(node.intervalID);
node.intervalID = -1;
}
if (node.buffer.length > 0) {
node.send(node.buffer.shift());
}
node.reportDepth();
}, node.rate);
} }
} }
else { else {
if (msg.hasOwnProperty("rate")) {
node.rate = msg.rate;
}
var timeSinceLast; var timeSinceLast;
if (node.lastSent) { if (node.lastSent) {
timeSinceLast = process.hrtime(node.lastSent); timeSinceLast = process.hrtime(node.lastSent);