mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	clone msg for every single line output
(this may not be desired) Add tests to ensure properties go trhough
This commit is contained in:
		| @@ -140,8 +140,8 @@ module.exports = function(RED) { | ||||
|                             try { | ||||
|                                 var stat = fs.statSync(filename); | ||||
|                                 node.wstreamIno = stat.ino; | ||||
|                             } catch(err) { | ||||
|                             } | ||||
|                             }  | ||||
|                             catch(err) { } | ||||
|                         }); | ||||
|                         node.wstream.on("error", function(err) { | ||||
|                             node.error(RED._("file.errors.appendfail",{error:err.toString()}),msg); | ||||
| @@ -276,7 +276,6 @@ module.exports = function(RED) { | ||||
|                     ch = "\n"; | ||||
|                     type = "string"; | ||||
|                 } | ||||
|                 var hwm; | ||||
|                 var getout = false; | ||||
|  | ||||
|                 var rs = fs.createReadStream(filename) | ||||
| @@ -290,30 +289,24 @@ module.exports = function(RED) { | ||||
|                                     spare += decode(chunk, node.encoding); | ||||
|                                     var bits = spare.split("\n"); | ||||
|                                     for (var i=0; i < bits.length - 1; i++) { | ||||
|                                         var m = { | ||||
|                                             payload:bits[i], | ||||
|                                             topic:msg.topic, | ||||
|                                             filename:msg.filename, | ||||
|                                             parts:{index:count, ch:ch, type:type, id:msg._msgid} | ||||
|                                         } | ||||
|                                         var sendMessage = RED.util.cloneMessage(msg); | ||||
|                                         sendMessage.payload = bits[i]; | ||||
|                                         sendMessage.parts = {index:count, ch:ch, type:type, id:msg._msgid}; | ||||
|                                         count += 1; | ||||
|                                         nodeSend(m); | ||||
|                                         nodeSend(sendMessage); | ||||
|                                     } | ||||
|                                     spare = bits[i]; | ||||
|                                 } | ||||
|                                 if (node.format === "stream") { | ||||
|                                     var m = { | ||||
|                                         payload:chunk, | ||||
|                                         topic:msg.topic, | ||||
|                                         filename:msg.filename, | ||||
|                                         parts:{index:count, ch:ch, type:type, id:msg._msgid} | ||||
|                                     } | ||||
|                                     var sendMessage = RED.util.cloneMessage(msg); | ||||
|                                     sendMessage.payload = chunk; | ||||
|                                     sendMessage.parts = {index:count, ch:ch, type:type, id:msg._msgid}; | ||||
|                                     count += 1; | ||||
|                                     if (chunk.length < hwm) { // last chunk is smaller that high water mark = eof | ||||
|                                         getout = false; | ||||
|                                         m.parts.count = count; | ||||
|                                         sendMessage.parts.count = count; | ||||
|                                     } | ||||
|                                     nodeSend(m); | ||||
|                                     nodeSend(sendMessage); | ||||
|                                 } | ||||
|                             } | ||||
|                             else { | ||||
| @@ -332,28 +325,23 @@ module.exports = function(RED) { | ||||
|                         nodeDone(); | ||||
|                     }) | ||||
|                     .on('end', function() { | ||||
|                         var sendMessage = RED.util.cloneMessage(msg); | ||||
|                         if (node.chunk === false) { | ||||
|                             if (node.format === "utf8") { | ||||
|                                 msg.payload = decode(lines, node.encoding); | ||||
|                                 sendMessage.payload = decode(lines, node.encoding); | ||||
|                             } | ||||
|                             else { msg.payload = lines; } | ||||
|                             nodeSend(msg); | ||||
|                             else { sendMessage.payload = lines; } | ||||
|                             nodeSend(sendMessage); | ||||
|                         } | ||||
|                         else if (node.format === "lines") { | ||||
|                             var m = { payload: spare, | ||||
|                                       parts: { | ||||
|                                           index: count, | ||||
|                                           count: count+1, | ||||
|                                           ch: ch, | ||||
|                                           type: type, | ||||
|                                           id: msg._msgid | ||||
|                                       } | ||||
|                                     }; | ||||
|                             nodeSend(m); | ||||
|                             sendMessage.payload = spare; | ||||
|                             sendMessage.parts = { index:count, count:count+1, ch:ch, type:type, id:msg._msgid }; | ||||
|                             nodeSend(sendMessage); | ||||
|                         } | ||||
|                         else if (getout) { // last chunk same size as high water mark - have to send empty extra packet. | ||||
|                             var m = { parts:{index:count, count:count, ch:ch, type:type, id:msg._msgid} }; | ||||
|                             nodeSend(m); | ||||
|                             delete sendMessage.payload; | ||||
|                             sendMessage.parts = { parts:{index:count, count:count, ch:ch, type:type, id:msg._msgid} }; | ||||
|                             nodeSend(sendMessage); | ||||
|                         } | ||||
|                         nodeDone(); | ||||
|                     }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user