workers: refactor.
This commit is contained in:
parent
9e4ea75198
commit
6cd9e4d687
@ -91,7 +91,8 @@ WorkerPool.cleanup = function cleanup() {
|
||||
WorkerPool._exitBound = false;
|
||||
|
||||
/**
|
||||
* Bind to process events in order to cleanup listeners.
|
||||
* Bind to process events in
|
||||
* order to cleanup listeners.
|
||||
* @private
|
||||
*/
|
||||
|
||||
@ -104,36 +105,40 @@ WorkerPool._bindExit = function _bindExit() {
|
||||
|
||||
WorkerPool._exitBound = true;
|
||||
|
||||
function onExit(err) {
|
||||
function onSignal() {
|
||||
WorkerPool.cleanup();
|
||||
|
||||
if (err) {
|
||||
util.error(err.stack + '');
|
||||
process.exit(1);
|
||||
return;
|
||||
}
|
||||
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
function onError(err) {
|
||||
WorkerPool.cleanup();
|
||||
if (err && err.stack)
|
||||
util.error(err.stack + '');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
process.once('exit', function() {
|
||||
WorkerPool.cleanup();
|
||||
});
|
||||
|
||||
if (process.listeners('SIGINT').length === 0)
|
||||
process.once('SIGINT', onExit);
|
||||
process.once('SIGINT', onSignal);
|
||||
|
||||
if (process.listeners('SIGTERM').length === 0)
|
||||
process.once('SIGTERM', onExit);
|
||||
process.once('SIGTERM', onSignal);
|
||||
|
||||
if (process.listeners('uncaughtException').length === 0)
|
||||
process.once('uncaughtException', onExit);
|
||||
process.once('uncaughtException', onError);
|
||||
|
||||
process.on('newListener', function(name) {
|
||||
if (name === 'SIGINT'
|
||||
|| name === 'SIGTERM'
|
||||
|| name === 'uncaughtException') {
|
||||
process.removeListener(name, onExit);
|
||||
switch (name) {
|
||||
case 'SIGINT':
|
||||
case 'SIGTERM':
|
||||
process.removeListener(name, onSignal);
|
||||
break;
|
||||
case 'uncaughtException':
|
||||
process.removeListener(name, onError);
|
||||
break;
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -191,8 +196,8 @@ WorkerPool.prototype.alloc = function alloc() {
|
||||
*/
|
||||
|
||||
WorkerPool.prototype.sendEvent = function sendEvent() {
|
||||
var i, child;
|
||||
var result = true;
|
||||
var i, child;
|
||||
|
||||
for (i = 0; i < this.children.length; i++) {
|
||||
child = this.children[i];
|
||||
@ -229,7 +234,6 @@ WorkerPool.prototype.destroy = function destroy() {
|
||||
* @param {Packet} packet
|
||||
* @param {Number} timeout
|
||||
* @returns {Promise}
|
||||
* the worker method specifies.
|
||||
*/
|
||||
|
||||
WorkerPool.prototype.execute = function execute(packet, timeout) {
|
||||
@ -377,7 +381,6 @@ WorkerPool.prototype.mine = co(function* mine(data, target, min, max) {
|
||||
* @param {Number} p
|
||||
* @param {Number} len
|
||||
* @returns {Promise}
|
||||
* @returns {Buffer}
|
||||
*/
|
||||
|
||||
WorkerPool.prototype.scrypt = co(function* scrypt(passwd, salt, N, r, p, len) {
|
||||
@ -401,10 +404,11 @@ function Worker(id) {
|
||||
|
||||
this.framer = new Framer();
|
||||
this.parser = new Parser();
|
||||
this.setMaxListeners(util.MAX_SAFE_INTEGER);
|
||||
|
||||
this.id = id != null ? id : -1;
|
||||
this.child = null;
|
||||
this.pending = {};
|
||||
|
||||
this.env = {
|
||||
BCOIN_WORKER_NETWORK: Network.type,
|
||||
BCOIN_WORKER_ISTTY: process.stdout
|
||||
|
||||
Loading…
Reference in New Issue
Block a user