All files / lib/internal/fs sync_write_stream.js

100% Statements 45/45
87.5% Branches 7/8
100% Functions 3/3
100% Lines 45/45

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4632x 32x 32x 32x 32x 32x 32x 32x 32x 32x 32x 2505x 2505x 2505x 2505x 2505x 2505x 2505x 2505x 2505x 32x 32x 32x 32x 32x 44847x 44847x 44847x 32x 32x 32x 3x 3x 3x 3x 3x 3x 3x 3x 32x 32x 32x 32x 32x 32x  
'use strict';
 
const {
  ObjectSetPrototypeOf,
  ReflectApply,
} = primordials;
const { kEmptyObject } = require('internal/util');
 
const { Writable } = require('stream');
const { closeSync, writeSync } = require('fs');
 
function SyncWriteStream(fd, options) {
  ReflectApply(Writable, this, [{ autoDestroy: true }]);
 
  options = options || kEmptyObject;
 
  this.fd = fd;
  this.readable = false;
  this.autoClose = options.autoClose === undefined ? true : options.autoClose;
}
 
ObjectSetPrototypeOf(SyncWriteStream.prototype, Writable.prototype);
ObjectSetPrototypeOf(SyncWriteStream, Writable);
 
SyncWriteStream.prototype._write = function(chunk, encoding, cb) {
  writeSync(this.fd, chunk, 0, chunk.length);
  cb();
  return true;
};
 
SyncWriteStream.prototype._destroy = function(err, cb) {
  if (this.fd === null) // already destroy()ed
    return cb(err);
 
  if (this.autoClose)
    closeSync(this.fd);
 
  this.fd = null;
  cb(err);
};
 
SyncWriteStream.prototype.destroySoon =
  SyncWriteStream.prototype.destroy;
 
module.exports = SyncWriteStream;