All files / lib/internal/cluster worker.js

100% Statements 55/55
100% Branches 15/15
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 492x 492x 492x 491x 491x 491x 492x 492x 491x 491x 491x 492x 492x 492x 492x 489x 489x 2383x 489x 489x 1615x 489x 489x 492x 73x 73x 73x 73x 73x 14x 73x 73x 73x 3954x 73x 73x 73x 248x 73x 73x 73x 9656x 73x  
'use strict';
 
const {
  ObjectSetPrototypeOf,
  ReflectApply,
} = primordials;
 
const EventEmitter = require('events');
 
module.exports = Worker;
 
// Common Worker implementation shared between the cluster master 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;
};