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