workers/build: require only one worker file.
This commit is contained in:
parent
f4f5abefef
commit
6154ca8b4c
4
Makefile
4
Makefile
@ -1,18 +1,14 @@
|
||||
all:
|
||||
@npm run webpack
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
browser:
|
||||
@npm run webpack-browser
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
compat:
|
||||
@npm run webpack-compat
|
||||
@cp -f lib/workers/worker-browser.js browser/bcoin-worker.js
|
||||
|
||||
node:
|
||||
@npm run webpack-node
|
||||
@cp -f lib/workers/worker.js ./bcoin-worker.js
|
||||
|
||||
clean:
|
||||
@npm run clean
|
||||
|
||||
@ -235,8 +235,7 @@ node = new bcoin.fullnode({
|
||||
coinCache: 30000000,
|
||||
logConsole: true,
|
||||
workers: true,
|
||||
workerURL: '/bcoin-worker.js',
|
||||
masterURL: '/bcoin-master.js',
|
||||
workerFile: '/bcoin-worker.js',
|
||||
logger: logger
|
||||
});
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@ const index = fs.readFileSync(`${__dirname}/index.html`);
|
||||
const indexjs = fs.readFileSync(`${__dirname}/index.js`);
|
||||
const debug = fs.readFileSync(`${__dirname}/debug.html`);
|
||||
const bcoin = fs.readFileSync(`${__dirname}/bcoin.js`);
|
||||
const master = fs.readFileSync(`${__dirname}/bcoin-master.js`);
|
||||
const worker = fs.readFileSync(`${__dirname}/bcoin-worker.js`);
|
||||
|
||||
let proxy = new WSProxy({
|
||||
@ -49,10 +48,6 @@ server.get('/bcoin.js', (req, res) => {
|
||||
res.send(200, bcoin, 'js');
|
||||
});
|
||||
|
||||
server.get('/bcoin-master.js', (req, res) => {
|
||||
res.send(200, master, 'js');
|
||||
});
|
||||
|
||||
server.get('/bcoin-worker.js', (req, res) => {
|
||||
res.send(200, worker, 'js');
|
||||
});
|
||||
|
||||
@ -89,9 +89,7 @@ Node.prototype.initOptions = function initOptions() {
|
||||
enabled: config.bool('workers'),
|
||||
size: config.num('workers-size'),
|
||||
timeout: config.num('workers-timeout'),
|
||||
workerFile: config.str('worker-file'),
|
||||
workerURL: config.str('worker-url'),
|
||||
masterURL: config.str('master-url')
|
||||
file: config.str('worker-file')
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@ -17,7 +17,6 @@ const Framer = require('./framer');
|
||||
const packets = require('./packets');
|
||||
const HAS_WORKERS = typeof global.postMessage === 'function';
|
||||
const HAS_CP = !!(process.stdin && process.stdout && process.stderr);
|
||||
let server;
|
||||
|
||||
/**
|
||||
* Represents the master process.
|
||||
@ -249,9 +248,4 @@ Master.prototype.handlePacket = function handlePacket(packet) {
|
||||
* Expose
|
||||
*/
|
||||
|
||||
server = new Master();
|
||||
|
||||
if (HAS_WORKERS)
|
||||
global.master = server;
|
||||
|
||||
module.exports = server;
|
||||
module.exports = Master;
|
||||
|
||||
@ -7,13 +7,14 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
let Master = require('./master');
|
||||
|
||||
self.onmessage = function onmessage(event) {
|
||||
var env;
|
||||
let env, server;
|
||||
|
||||
self.onmessage = function() {};
|
||||
|
||||
env = JSON.parse(event.data);
|
||||
|
||||
self.importScripts(env.BCOIN_MASTER_URL);
|
||||
self.master.listen(env);
|
||||
server = new Master();
|
||||
server.listen(env);
|
||||
};
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
let master = require('./master');
|
||||
let Master = require('./master');
|
||||
let server = new Master();
|
||||
|
||||
master.listen(process.env);
|
||||
server.listen(process.env);
|
||||
|
||||
@ -52,9 +52,7 @@ function WorkerPool(options) {
|
||||
this.nonce = 0;
|
||||
this.enabled = true;
|
||||
|
||||
this.workerFile = WorkerPool.WORKER_FILE;
|
||||
this.workerURL = WorkerPool.WORKER_URL;
|
||||
this.masterURL = WorkerPool.MASTER_URL;
|
||||
this.file = WorkerPool.WORKER_FILE;
|
||||
|
||||
bindExit();
|
||||
pools.add(this);
|
||||
@ -78,20 +76,6 @@ WorkerPool.CORES = getCores();
|
||||
|
||||
WorkerPool.WORKER_FILE = process.env.BCOIN_WORKER_FILE || 'worker.js';
|
||||
|
||||
/**
|
||||
* Default worker URL.
|
||||
* @const {String}
|
||||
*/
|
||||
|
||||
WorkerPool.WORKER_URL = process.env.BCOIN_WORKER_URL || '/bcoin-worker.js';
|
||||
|
||||
/**
|
||||
* Default master URL.
|
||||
* @const {String}
|
||||
*/
|
||||
|
||||
WorkerPool.MASTER_URL = process.env.BCOIN_MASTER_URL || '/bcoin-master.js';
|
||||
|
||||
/**
|
||||
* Set worker pool options.
|
||||
* @param {Object} options
|
||||
@ -118,19 +102,9 @@ WorkerPool.prototype.set = function set(options) {
|
||||
this.timeout = options.timeout;
|
||||
}
|
||||
|
||||
if (options.workerFile != null) {
|
||||
assert(typeof options.workerFile === 'string');
|
||||
this.workerFile = options.workerFile;
|
||||
}
|
||||
|
||||
if (options.workerURL != null) {
|
||||
assert(typeof options.workerURL === 'string');
|
||||
this.workerURL = options.workerURL;
|
||||
}
|
||||
|
||||
if (options.masterURL != null) {
|
||||
assert(typeof options.masterURL === 'string');
|
||||
this.masterURL = options.masterURL;
|
||||
if (options.file != null) {
|
||||
assert(typeof options.file === 'string');
|
||||
this.file = options.file;
|
||||
}
|
||||
};
|
||||
|
||||
@ -176,7 +150,9 @@ WorkerPool.prototype.close = async function close() {
|
||||
*/
|
||||
|
||||
WorkerPool.prototype.spawn = function spawn(id) {
|
||||
let child = new Worker(id, this);
|
||||
let child = new Worker(this.file);
|
||||
|
||||
child.id = id;
|
||||
|
||||
child.on('error', (err) => {
|
||||
this.emit('error', err, child);
|
||||
@ -416,18 +392,17 @@ WorkerPool.prototype.scrypt = async function scrypt(passwd, salt, N, r, p, len)
|
||||
* Represents a worker.
|
||||
* @alias module:workers.Worker
|
||||
* @constructor
|
||||
* @param {Number} id
|
||||
* @param {Object} options
|
||||
* @param {String} file
|
||||
*/
|
||||
|
||||
function Worker(id, options) {
|
||||
function Worker(file) {
|
||||
if (!(this instanceof Worker))
|
||||
return new Worker(id, options);
|
||||
return new Worker(file);
|
||||
|
||||
EventEmitter.call(this);
|
||||
|
||||
this.id = id;
|
||||
this.options = options;
|
||||
this.file = file;
|
||||
this.id = -1;
|
||||
|
||||
this.framer = new Framer();
|
||||
this.parser = new Parser();
|
||||
@ -435,7 +410,6 @@ function Worker(id, options) {
|
||||
this.child = null;
|
||||
|
||||
this.env = {
|
||||
BCOIN_MASTER_URL: this.options.masterURL,
|
||||
BCOIN_WORKER_NETWORK: Network.type,
|
||||
BCOIN_WORKER_ISTTY: process.stdout
|
||||
? (process.stdout.isTTY ? '1' : '0')
|
||||
@ -484,7 +458,7 @@ Worker.prototype._init = function _init() {
|
||||
*/
|
||||
|
||||
Worker.prototype._initWebWorkers = function _initWebWorkers() {
|
||||
this.child = new global.Worker(this.options.workerURL);
|
||||
this.child = new global.Worker(this.file);
|
||||
|
||||
this.child.onerror = (event) => {
|
||||
this.emit('error', new Error('Worker error.'));
|
||||
@ -515,7 +489,7 @@ Worker.prototype._initWebWorkers = function _initWebWorkers() {
|
||||
|
||||
Worker.prototype._initChildProcess = function _initChildProcess() {
|
||||
let bin = process.argv[0];
|
||||
let file = path.resolve(__dirname, this.options.workerFile);
|
||||
let file = path.resolve(__dirname, this.file);
|
||||
let env = Object.assign({}, process.env, this.env);
|
||||
let options = { stdio: 'pipe', env: env };
|
||||
|
||||
|
||||
@ -58,7 +58,7 @@
|
||||
"bcoin": "./bin/bcoin"
|
||||
},
|
||||
"scripts": {
|
||||
"clean": "rm -f {browser/,}{bcoin.js,bcoin-master.js,bcoin-worker.js}",
|
||||
"clean": "rm -f {browser/,}{bcoin.js,bcoin-worker.js}",
|
||||
"docs": "jsdoc -c jsdoc.json",
|
||||
"lint": "eslint lib/ test/ migrate/ examples/ bench/ scripts/*.js bin/cli bin/node bin/spvnode || exit 0",
|
||||
"lint-file": "eslint",
|
||||
|
||||
@ -10,7 +10,7 @@ module.exports = {
|
||||
target: 'web',
|
||||
entry: {
|
||||
'bcoin': './lib/bcoin-browser',
|
||||
'bcoin-master': './lib/workers/master'
|
||||
'bcoin-worker': './lib/workers/worker-browser'
|
||||
},
|
||||
output: {
|
||||
path: path.join(__dirname, 'browser'),
|
||||
@ -24,11 +24,13 @@ module.exports = {
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.BCOIN_NETWORK':
|
||||
str(env.BCOIN_NETWORK || 'main'),
|
||||
'process.env.BCOIN_WORKER_URL':
|
||||
str(env.BCOIN_WORKER_URL || '/bcoin-worker.js'),
|
||||
'process.env.BCOIN_MASTER_URL':
|
||||
str(env.BCOIN_MASTER_URL || '/bcoin-master.js')
|
||||
'process.env.BCOIN_WORKER_FILE':
|
||||
str(env.BCOIN_WORKER_FILE || '/bcoin-worker.js')
|
||||
}),
|
||||
new UglifyJsPlugin()
|
||||
new UglifyJsPlugin({
|
||||
compress: {
|
||||
warnings: true
|
||||
}
|
||||
})
|
||||
]
|
||||
};
|
||||
|
||||
@ -9,7 +9,7 @@ module.exports = {
|
||||
target: 'web',
|
||||
entry: {
|
||||
'bcoin': './lib/bcoin-browser',
|
||||
'bcoin-master': './lib/workers/master'
|
||||
'bcoin-worker': './lib/workers/worker-browser'
|
||||
},
|
||||
output: {
|
||||
path: path.join(__dirname, 'browser'),
|
||||
@ -30,10 +30,8 @@ module.exports = {
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.BCOIN_NETWORK':
|
||||
str(env.BCOIN_NETWORK || 'main'),
|
||||
'process.env.BCOIN_WORKER_URL':
|
||||
str(env.BCOIN_WORKER_URL || '/bcoin-worker.js'),
|
||||
'process.env.BCOIN_MASTER_URL':
|
||||
str(env.BCOIN_MASTER_URL || '/bcoin-master.js')
|
||||
'process.env.BCOIN_WORKER_FILE':
|
||||
str(env.BCOIN_WORKER_FILE || '/bcoin-worker.js')
|
||||
}),
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
compress: {
|
||||
|
||||
@ -40,6 +40,10 @@ module.exports = {
|
||||
str(env.BCOIN_WORKER_FILE || 'bcoin-worker.js')
|
||||
}),
|
||||
new webpack.IgnorePlugin(/^utf-8-validate|bufferutil$/),
|
||||
new UglifyJsPlugin()
|
||||
new UglifyJsPlugin({
|
||||
compress: {
|
||||
warnings: true
|
||||
}
|
||||
})
|
||||
]
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user