StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
StackGenVis/frontend/node_modules/vinyl-fs/lib/dest/writeContents/writeStream.js

58 lines
1.3 KiB

4 years ago
'use strict';
var fs = require('graceful-fs');
var fo = require('../../fileOperations');
var streamFile = require('../../src/getContents/streamFile');
function writeStream(writePath, file, written) {
var opt = {
mode: file.stat.mode,
flag: file.flag,
};
var outStream = fs.createWriteStream(writePath, opt);
file.contents.once('error', complete);
file.contents.once('end', readStreamEnd);
outStream.once('error', complete);
outStream.once('finish', complete);
// Streams are piped with end disabled, this prevents the
// WriteStream from closing the file descriptor after all
// data is written.
file.contents.pipe(outStream, { end: false });
function readStreamEnd() {
streamFile(file, complete);
}
function end(propagatedErr) {
outStream.end(onEnd);
function onEnd(endErr) {
written(propagatedErr || endErr);
}
}
// Cleanup
function complete(streamErr) {
file.contents.removeListener('error', complete);
file.contents.removeListener('end', readStreamEnd);
outStream.removeListener('error', complete);
outStream.removeListener('finish', complete);
if (streamErr) {
return end(streamErr);
}
if (typeof outStream.fd !== 'number') {
return end();
}
fo.updateMetadata(outStream.fd, file, end);
}
}
module.exports = writeStream;