Source: workers/parent.js

  1. /*!
  2. * parent.js - worker processes for bcoin
  3. * Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
  4. * https://github.com/bcoin-org/bcoin
  5. */
  6. 'use strict';
  7. const EventEmitter = require('events');
  8. /**
  9. * Parent
  10. * Represents the parent process.
  11. * @alias module:workers.Parent
  12. * @extends EventEmitter
  13. */
  14. class Parent extends EventEmitter {
  15. /**
  16. * Create the parent process.
  17. * @constructor
  18. */
  19. constructor() {
  20. super();
  21. this.init();
  22. }
  23. /**
  24. * Initialize master (node.js).
  25. * @private
  26. */
  27. init() {
  28. process.stdin.on('data', (data) => {
  29. this.emit('data', data);
  30. });
  31. // Nowhere to send these errors:
  32. process.stdin.on('error', () => {});
  33. process.stdout.on('error', () => {});
  34. process.stderr.on('error', () => {});
  35. process.on('uncaughtException', (err) => {
  36. this.emit('exception', err);
  37. });
  38. }
  39. /**
  40. * Send data to parent process.
  41. * @param {Buffer} data
  42. * @returns {Boolean}
  43. */
  44. write(data) {
  45. return process.stdout.write(data);
  46. }
  47. /**
  48. * Destroy the parent process.
  49. */
  50. destroy() {
  51. process.exit(0);
  52. }
  53. }
  54. /*
  55. * Expose
  56. */
  57. module.exports = Parent;