workers: refactor logging.
This commit is contained in:
parent
bdc7ec0198
commit
f2a9eb6538
@ -416,9 +416,8 @@ util.fmt = nodeUtil.format;
|
||||
*/
|
||||
|
||||
util.format = function format(args, color) {
|
||||
color = color
|
||||
? (process.stdout ? process.stdout.isTTY : false)
|
||||
: false;
|
||||
if (color == null)
|
||||
color = process.stdout ? process.stdout.isTTY : false;
|
||||
|
||||
return typeof args[0] === 'object'
|
||||
? util.inspectify(args[0], color)
|
||||
@ -446,7 +445,7 @@ util.log = function log() {
|
||||
return;
|
||||
}
|
||||
|
||||
msg = util.format(args, true);
|
||||
msg = util.format(args);
|
||||
process.stdout.write(msg + '\n');
|
||||
};
|
||||
|
||||
@ -471,7 +470,7 @@ util.error = function error() {
|
||||
return;
|
||||
}
|
||||
|
||||
msg = util.format(args, true);
|
||||
msg = util.format(args);
|
||||
process.stderr.write(msg + '\n');
|
||||
};
|
||||
|
||||
|
||||
@ -34,6 +34,7 @@ function Master() {
|
||||
this.parser = new Parser();
|
||||
this.env = {};
|
||||
this.listening = false;
|
||||
this.color = false;
|
||||
|
||||
this._init();
|
||||
}
|
||||
@ -184,12 +185,14 @@ Master.prototype.destroy = function destroy() {
|
||||
|
||||
Master.prototype.log = function log() {
|
||||
var items = new Array(arguments.length);
|
||||
var i;
|
||||
var i, text;
|
||||
|
||||
for (i = 0; i < items.length; i++)
|
||||
items[i] = arguments[i];
|
||||
|
||||
this.send(new packets.LogPacket(items));
|
||||
text = util.format(items, this.color);
|
||||
|
||||
this.send(new packets.LogPacket(text));
|
||||
};
|
||||
|
||||
/**
|
||||
@ -205,6 +208,7 @@ Master.prototype.listen = function listen(env) {
|
||||
|
||||
this.env = env;
|
||||
this.listening = true;
|
||||
this.color = +env.BCOIN_WORKER_ISTTY === 1;
|
||||
|
||||
Network.set(env.BCOIN_WORKER_NETWORK);
|
||||
|
||||
|
||||
@ -87,9 +87,9 @@ EventPacket.fromRaw = function fromRaw(data) {
|
||||
* @constructor
|
||||
*/
|
||||
|
||||
function LogPacket(items) {
|
||||
function LogPacket(text) {
|
||||
Packet.call(this);
|
||||
this.items = items || [];
|
||||
this.text = text || '';
|
||||
}
|
||||
|
||||
util.inherits(LogPacket, Packet);
|
||||
@ -97,13 +97,13 @@ util.inherits(LogPacket, Packet);
|
||||
LogPacket.prototype.cmd = packetTypes.LOG;
|
||||
|
||||
LogPacket.prototype.toRaw = function toRaw(bw) {
|
||||
bw.writeVarString(JSON.stringify(this.items), 'utf8');
|
||||
bw.writeVarString(this.text, 'utf8');
|
||||
};
|
||||
|
||||
LogPacket.fromRaw = function fromRaw(data) {
|
||||
var br = new BufferReader(data, true);
|
||||
var packet = new LogPacket();
|
||||
packet.items = JSON.parse(br.readVarString('utf8'));
|
||||
packet.text = br.readVarString('utf8');
|
||||
return packet;
|
||||
};
|
||||
|
||||
|
||||
@ -411,7 +411,10 @@ function Worker(id) {
|
||||
this.child = null;
|
||||
this.pending = {};
|
||||
this.env = {
|
||||
BCOIN_WORKER_NETWORK: Network.type
|
||||
BCOIN_WORKER_NETWORK: Network.type,
|
||||
BCOIN_WORKER_ISTTY: process.stdout
|
||||
? (process.stdout.isTTY ? '1' : '0')
|
||||
: '0'
|
||||
};
|
||||
|
||||
this._init();
|
||||
@ -581,7 +584,7 @@ Worker.prototype.handlePacket = function handlePacket(packet) {
|
||||
break;
|
||||
case packets.types.LOG:
|
||||
util.log('Worker %d:', this.id);
|
||||
util.log.apply(util, packet.items);
|
||||
util.log(packet.text);
|
||||
break;
|
||||
case packets.types.ERROR:
|
||||
this.emit('error', packet.error);
|
||||
@ -680,7 +683,7 @@ Worker.prototype.execute = function execute(packet, timeout) {
|
||||
Worker.prototype._execute = function _execute(packet, timeout, callback) {
|
||||
var job = new PendingJob(this, packet.id, callback);
|
||||
|
||||
assert(!this.pending[packet.id]);
|
||||
assert(!this.pending[packet.id], 'ID overflow.');
|
||||
|
||||
this.pending[packet.id] = job;
|
||||
|
||||
@ -697,7 +700,10 @@ Worker.prototype._execute = function _execute(packet, timeout, callback) {
|
||||
|
||||
Worker.prototype.resolveJob = function resolveJob(id, result) {
|
||||
var job = this.pending[id];
|
||||
assert(job);
|
||||
|
||||
if (!job)
|
||||
throw new Error('Job ' + id + ' is not in progress.');
|
||||
|
||||
job.finish(null, result);
|
||||
};
|
||||
|
||||
@ -709,7 +715,10 @@ Worker.prototype.resolveJob = function resolveJob(id, result) {
|
||||
|
||||
Worker.prototype.rejectJob = function rejectJob(id, err) {
|
||||
var job = this.pending[id];
|
||||
assert(job);
|
||||
|
||||
if (!job)
|
||||
throw new Error('Job ' + id + ' is not in progress.');
|
||||
|
||||
job.finish(err);
|
||||
};
|
||||
|
||||
@ -751,7 +760,7 @@ function PendingJob(worker, id, callback) {
|
||||
PendingJob.prototype.start = function start(timeout) {
|
||||
var self = this;
|
||||
|
||||
if (timeout === -1)
|
||||
if (!timeout || timeout === -1)
|
||||
return;
|
||||
|
||||
this.timer = setTimeout(function() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user