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';
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);
};

View File

@ -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();

View File

@ -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')
})
]
};