workers: fix build for workers.

This commit is contained in:
Christopher Jeffrey 2017-06-28 18:26:16 -07:00
parent 307e7dd698
commit 98a59e814d
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
3 changed files with 30 additions and 11 deletions

View File

@ -8,16 +8,12 @@
'use strict'; 'use strict';
self.onmessage = function onmessage(event) { self.onmessage = function onmessage(event) {
var file = '/bcoin-master.js';
var env; var env;
self.onmessage = function() {}; self.onmessage = function() {};
env = JSON.parse(event.data); env = JSON.parse(event.data);
if (env.BCOIN_MASTER_URL) self.importScripts(env.BCOIN_MASTER_URL);
file = env.BCOIN_MASTER_URL;
self.importScripts(file);
self.master.listen(env); self.master.listen(env);
}; };

View File

@ -57,18 +57,39 @@ util.inherits(WorkerPool, EventEmitter);
/** /**
* Whether workers are supported. * Whether workers are supported.
* @const {Boolean} * @type {Boolean}
*/ */
WorkerPool.support = HAS_WORKERS || HAS_CP; WorkerPool.support = HAS_WORKERS || HAS_CP;
/** /**
* Number of CPUs/cores available. * Number of CPUs/cores available.
* @const {Number} * @type {Number}
*/ */
WorkerPool.CORES = getCores(); WorkerPool.CORES = getCores();
/**
* Default worker file.
* @const {String}
*/
WorkerPool.WORKER_FILE = 'worker.js';
/**
* Default worker URL.
* @const {String}
*/
WorkerPool.WORKER_URL = '/bcoin-worker.js';
/**
* Default master URL.
* @const {String}
*/
WorkerPool.MASTER_URL = '/bcoin-master.js';
/** /**
* Global list of workers. * Global list of workers.
* @type {Array} * @type {Array}
@ -466,7 +487,7 @@ function Worker(id) {
this.pending = {}; this.pending = {};
this.env = { this.env = {
BCOIN_MASTER_URL: process.env.BCOIN_MASTER_URL, BCOIN_MASTER_URL: process.env.BCOIN_MASTER_URL || WorkerPool.MASTER_URL,
BCOIN_WORKER_NETWORK: Network.type, BCOIN_WORKER_NETWORK: Network.type,
BCOIN_WORKER_ISTTY: process.stdout BCOIN_WORKER_ISTTY: process.stdout
? (process.stdout.isTTY ? '1' : '0') ? (process.stdout.isTTY ? '1' : '0')
@ -519,7 +540,7 @@ Worker.prototype._init = function _init() {
Worker.prototype._initWebWorkers = function _initWebWorkers() { Worker.prototype._initWebWorkers = function _initWebWorkers() {
var self = this; var self = this;
var file = '/bcoin-worker.js'; var file = WorkerPool.WORKER_URL;
if (process.env.BCOIN_WORKER_URL) if (process.env.BCOIN_WORKER_URL)
file = process.env.BCOIN_WORKER_URL; file = process.env.BCOIN_WORKER_URL;
@ -553,13 +574,15 @@ Worker.prototype._initWebWorkers = function _initWebWorkers() {
Worker.prototype._initChildProcess = function _initChildProcess() { Worker.prototype._initChildProcess = function _initChildProcess() {
var self = this; var self = this;
var bin = process.argv[0]; var bin = process.argv[0];
var file = path.join(__dirname, 'worker.js'); var file = WorkerPool.WORKER_FILE;
var env = Object.assign({}, process.env, this.env); var env = Object.assign({}, process.env, this.env);
var options = { stdio: 'pipe', env: env }; var options = { stdio: 'pipe', env: env };
if (process.env.BCOIN_WORKER_FILE) if (process.env.BCOIN_WORKER_FILE)
file = process.env.BCOIN_WORKER_FILE; file = process.env.BCOIN_WORKER_FILE;
file = path.resolve(__dirname, file);
this.child = cp.spawn(bin, [file], options); this.child = cp.spawn(bin, [file], options);
this.child.unref(); this.child.unref();

View File

@ -36,7 +36,7 @@ module.exports = {
plugins: [ plugins: [
new webpack.DefinePlugin({ new webpack.DefinePlugin({
'process.env.BCOIN_WORKER_FILE': 'process.env.BCOIN_WORKER_FILE':
str(env.BCOIN_WORKER_FILE || "path.join(__dirname, 'bcoin-worker.js')") str(env.BCOIN_WORKER_FILE || 'bcoin-worker.js')
}) })
] ]
}; };