'use strict'; const { ObjectSetPrototypeOf, } = 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); EventEmitter.call(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() { this.destroy.apply(this, arguments); }; Worker.prototype.send = function() { return this.process.send.apply(this.process, arguments); }; Worker.prototype.isDead = function() { return this.process.exitCode != null || this.process.signalCode != null; }; Worker.prototype.isConnected = function() { return this.process.connected; };