All files / lib/internal/cluster worker.js

100% Statements 55/55
100% Branches 14/14
100% Functions 5/5
100% Lines 55/55

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 46 47 48 49 50 51 52 53 54 55 5673x 73x 73x 73x 73x 73x 73x 73x 73x 73x 73x 73x 496x 496x 496x 495x 495x 495x 496x 496x 495x 495x 495x 496x 496x 496x 496x 493x 493x 1822x 493x 493x 2167x 493x 493x 496x 73x 73x 73x 73x 73x 14x 73x 73x 73x 3954x 73x 73x 73x 250x 73x 73x 73x 10210x 73x  
'use strict';
 
const {
  ObjectSetPrototypeOf,
  ReflectApply,
} = primordials;
 
const EventEmitter = require('events');
 
module.exports = Worker;
 
// Common Worker implementation shared between the cluster primary and workers.
function Worker(options) {
  if (!(this instanceof Worker))
    return new Worker(options);
 
  ReflectApply(EventEmitter, this, []);
 
  if (options === null || typeof options !== 'object')
    options = {};
 
  this.exitedAfterDisconnect = undefined;
 
  this.state = options.state || 'none';
  this.id = options.id | 0;
 
  if (options.process) {
    this.process = options.process;
    this.process.on('error', (code, signal) =>
      this.emit('error', code, signal)
    );
    this.process.on('message', (message, handle) =>
      this.emit('message', message, handle)
    );
  }
}
 
ObjectSetPrototypeOf(Worker.prototype, EventEmitter.prototype);
ObjectSetPrototypeOf(Worker, EventEmitter);
 
Worker.prototype.kill = function() {
  ReflectApply(this.destroy, this, arguments);
};
 
Worker.prototype.send = function() {
  return ReflectApply(this.process.send, this.process, arguments);
};
 
Worker.prototype.isDead = function() {
  return this.process.exitCode != null || this.process.signalCode != null;
};
 
Worker.prototype.isConnected = function() {
  return this.process.connected;
};