Skip to content

Commit 75b9a2d

Browse files
committed
fixup! WIP compressed write
1 parent 60bfa95 commit 75b9a2d

File tree

1 file changed

+44
-20
lines changed

1 file changed

+44
-20
lines changed

lib/protocol/PacketWriter.js

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ var Buffer = require('safe-buffer').Buffer;
1212
var BufferList = require('./BufferList');
1313
var EventEmitter = require('events').EventEmitter;
1414
var Util = require('util');
15-
var Zlib = require('zlib');
1615

1716
module.exports = PacketWriter;
1817
function PacketWriter() {
@@ -44,14 +43,10 @@ PacketWriter.prototype.finalize = function finalize(parser) {
4443

4544
var packetNumber = parser.incrementPacketNumber();
4645
var packetOffset = this._offset;
46+
var start = packet * MAX_PACKET_LENGTH;
47+
var end = start + packetLength;
4748

48-
this.writeUnsignedNumber(3, packetLength);
49-
this.writeUnsignedNumber(1, packetNumber);
50-
51-
var start = packet * MAX_PACKET_LENGTH;
52-
var end = start + packetLength;
53-
54-
this.writeBuffer(buffer.slice(start, end));
49+
this.writeBuffer(this._toPacket(packetNumber, buffer.slice(start, end)));
5550

5651
if (!parser._compressed) {
5752
this.emit('data', this._buffer.slice(packetOffset, this._offset));
@@ -70,21 +65,11 @@ PacketWriter.prototype.finalize = function finalize(parser) {
7065
? length % MAX_PACKET_LENGTH
7166
: MAX_PACKET_LENGTH;
7267

73-
packetNumber = parser.incrementCompressedPacketNumber();
74-
75-
this._buffer = Buffer.allocUnsafe(packetLength + COMPRESSED_PACKET_HEADER_LENGTH);
76-
this._offset = 0;
77-
78-
this.writeUnsignedNumber(3, packetLength);
79-
this.writeUnsignedNumber(1, packetNumber);
80-
this.writeUnsignedNumber(3, 0);
81-
68+
var num = parser.incrementCompressedPacketNumber();
8269
var start = packet * MAX_PACKET_LENGTH;
8370
var end = start + packetLength;
8471

85-
this.writeBuffer(buffer.slice(start, end));
86-
87-
this.emit('data', this._buffer);
72+
this.emit('data', this._toCompressedPacket(num, buffer.slice(start, end)));
8873
}
8974
}
9075
};
@@ -272,3 +257,42 @@ PacketWriter.prototype._allocate = function _allocate(bytes) {
272257
this._buffer = Buffer.alloc(newSize);
273258
oldBuffer.copy(this._buffer);
274259
};
260+
261+
PacketWriter.prototype._toCompressedPacket = function _toCompressedPacket(num, buf) {
262+
var origBuffer = this._buffer;
263+
var origOffset = this._offset;
264+
265+
this._buffer = Buffer.allocUnsafe(buf.length + COMPRESSED_PACKET_HEADER_LENGTH);
266+
this._offset = 0;
267+
268+
this.writeUnsignedNumber(3, buf.length);
269+
this.writeUnsignedNumber(1, num);
270+
this.writeUnsignedNumber(3, 0);
271+
this.writeBuffer(buf);
272+
273+
var packet = this._buffer;
274+
275+
this._buffer = origBuffer;
276+
this._offset = origOffset;
277+
278+
return packet;
279+
};
280+
281+
PacketWriter.prototype._toPacket = function _toPacket(num, buf) {
282+
var origBuffer = this._buffer;
283+
var origOffset = this._offset;
284+
285+
this._buffer = Buffer.allocUnsafe(buf.length + PACKET_HEADER_LENGTH);
286+
this._offset = 0;
287+
288+
this.writeUnsignedNumber(3, buf.length);
289+
this.writeUnsignedNumber(1, num);
290+
this.writeBuffer(buf);
291+
292+
var packet = this._buffer;
293+
294+
this._buffer = origBuffer;
295+
this._offset = origOffset;
296+
297+
return packet;
298+
};

0 commit comments

Comments
 (0)