workers: refactor logging.

This commit is contained in:
Christopher Jeffrey 2016-12-02 18:34:29 -08:00
parent bdc7ec0198
commit f2a9eb6538
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
4 changed files with 29 additions and 17 deletions

View File

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

View File

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

View File

@ -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;
};

View File

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