diff --git a/lib/workers/worker-browser.js b/lib/workers/worker-browser.js index a72642ae..0f4f4631 100644 --- a/lib/workers/worker-browser.js +++ b/lib/workers/worker-browser.js @@ -8,16 +8,12 @@ 'use strict'; self.onmessage = function onmessage(event) { - var file = '/bcoin-master.js'; var env; self.onmessage = function() {}; env = JSON.parse(event.data); - if (env.BCOIN_MASTER_URL) - file = env.BCOIN_MASTER_URL; - - self.importScripts(file); + self.importScripts(env.BCOIN_MASTER_URL); self.master.listen(env); }; diff --git a/lib/workers/workerpool.js b/lib/workers/workerpool.js index d9a4de79..efb0c356 100644 --- a/lib/workers/workerpool.js +++ b/lib/workers/workerpool.js @@ -57,18 +57,39 @@ util.inherits(WorkerPool, EventEmitter); /** * Whether workers are supported. - * @const {Boolean} + * @type {Boolean} */ WorkerPool.support = HAS_WORKERS || HAS_CP; /** * Number of CPUs/cores available. - * @const {Number} + * @type {Number} */ 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. * @type {Array} @@ -466,7 +487,7 @@ function Worker(id) { this.pending = {}; 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_ISTTY: process.stdout ? (process.stdout.isTTY ? '1' : '0') @@ -519,7 +540,7 @@ Worker.prototype._init = function _init() { Worker.prototype._initWebWorkers = function _initWebWorkers() { var self = this; - var file = '/bcoin-worker.js'; + var file = WorkerPool.WORKER_URL; if (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() { var self = this; 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 options = { stdio: 'pipe', env: env }; if (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.unref(); diff --git a/webpack.node.js b/webpack.node.js index 3f71ae87..a2cb245c 100644 --- a/webpack.node.js +++ b/webpack.node.js @@ -36,7 +36,7 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.BCOIN_WORKER_FILE': - str(env.BCOIN_WORKER_FILE || "path.join(__dirname, 'bcoin-worker.js')") + str(env.BCOIN_WORKER_FILE || 'bcoin-worker.js') }) ] };