workers: optimize protocol more.
This commit is contained in:
parent
52dd3c2cdc
commit
432ee64713
@ -820,21 +820,21 @@ function Framer() {
|
||||
utils.inherits(Framer, EventEmitter);
|
||||
|
||||
Framer.prototype.packet = function packet(job, cmd, items) {
|
||||
var p = new BufferWriter();
|
||||
var payload = this.body(items);
|
||||
var packet = new Buffer(25 + payload.length + 1);
|
||||
|
||||
assert(cmd.length < 12);
|
||||
assert(payload.length <= 0xffffffff);
|
||||
|
||||
p.writeU32(0xdeadbeef);
|
||||
p.writeU32(job);
|
||||
p.writeString(cmd, 'ascii');
|
||||
p.fill(0, 12 - cmd.length);
|
||||
p.writeU32(payload.length + 1);
|
||||
p.writeBytes(payload);
|
||||
p.writeU8(0x0a);
|
||||
packet.writeUInt32LE(0xdeadbeef, 0, true);
|
||||
packet.writeUInt32LE(job, 4, true);
|
||||
packet.writeUInt8(cmd.length, 8, true);
|
||||
packet.write(cmd, 9, 'ascii');
|
||||
packet.writeUInt32LE(payload.length + 1, 21, true);
|
||||
payload.copy(packet, 25);
|
||||
packet[packet.length - 1] = 0x0a;
|
||||
|
||||
return p.render();
|
||||
return packet;
|
||||
};
|
||||
|
||||
Framer.prototype.body = function body(items) {
|
||||
@ -939,7 +939,7 @@ function Parser() {
|
||||
|
||||
EventEmitter.call(this);
|
||||
|
||||
this.waiting = 24;
|
||||
this.waiting = 25;
|
||||
this.packet = null;
|
||||
this.pending = [];
|
||||
this.total = 0;
|
||||
@ -1013,7 +1013,7 @@ Parser.prototype.parse = function parse(data) {
|
||||
|
||||
packet = this.packet;
|
||||
|
||||
this.waiting = 24;
|
||||
this.waiting = 25;
|
||||
this.packet = null;
|
||||
|
||||
try {
|
||||
@ -1032,7 +1032,7 @@ Parser.prototype.parse = function parse(data) {
|
||||
};
|
||||
|
||||
Parser.prototype.parseHeader = function parseHeader(data) {
|
||||
var magic, job, size, i, cmd;
|
||||
var magic, job, len, cmd, size;
|
||||
|
||||
magic = data.readUInt32LE(0, true);
|
||||
|
||||
@ -1041,14 +1041,10 @@ Parser.prototype.parseHeader = function parseHeader(data) {
|
||||
|
||||
job = data.readUInt32LE(4, true);
|
||||
|
||||
for (i = 0; data[i + 8] !== 0 && i < 12; i++);
|
||||
len = data[8];
|
||||
cmd = data.toString('ascii', 9, 9 + len);
|
||||
|
||||
if (i === 12)
|
||||
throw new Error('Not NULL-terminated cmd');
|
||||
|
||||
cmd = data.toString('ascii', 8, 8 + i);
|
||||
|
||||
size = data.readUInt32LE(20, true);
|
||||
size = data.readUInt32LE(21, true);
|
||||
|
||||
return new Packet(job, cmd, size);
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user