Skip to content

Commit eacfdff

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

File tree

1 file changed

+15
-34
lines changed

1 file changed

+15
-34
lines changed

lib/protocol/PacketWriter.js

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -27,50 +27,31 @@ PacketWriter.prototype.finalize = function finalize(parser) {
2727
this._offset = 0;
2828
}
2929

30+
var maxPacketLength = parser._compressed
31+
? MAX_PACKET_LENGTH - PACKET_HEADER_LENGTH
32+
: MAX_PACKET_LENGTH;
33+
3034
var buffer = this._buffer;
3135
var length = this._offset;
32-
var packets = Math.floor(length / MAX_PACKET_LENGTH) + 1;
33-
var size = length + (packets * PACKET_HEADER_LENGTH);
34-
35-
this._buffer = Buffer.allocUnsafe(size);
36-
this._offset = 0;
36+
var packets = Math.floor(length / maxPacketLength) + 1;
3737

3838
for (var packet = 0; packet < packets; packet++) {
3939
var isLast = (packet + 1 === packets);
4040
var packetLength = (isLast)
41-
? length % MAX_PACKET_LENGTH
42-
: MAX_PACKET_LENGTH;
41+
? length % maxPacketLength
42+
: maxPacketLength;
4343

44-
var packetNumber = parser.incrementPacketNumber();
45-
var packetOffset = this._offset;
46-
var start = packet * MAX_PACKET_LENGTH;
47-
var end = start + packetLength;
44+
var num = parser.incrementPacketNumber();
45+
var start = packet * maxPacketLength;
46+
var end = start + packetLength;
47+
var buf = this._toPacket(num, buffer.slice(start, end));
4848

49-
this.writeBuffer(this._toPacket(packetNumber, buffer.slice(start, end)));
50-
51-
if (!parser._compressed) {
52-
this.emit('data', this._buffer.slice(packetOffset, this._offset));
49+
if (parser._compressed) {
50+
num = parser.incrementCompressedPacketNumber();
51+
buf = this._toCompressedPacket(num, buf);
5352
}
54-
}
5553

56-
if (parser._compressed) {
57-
buffer = this._buffer;
58-
length = this._offset;
59-
packets = Math.floor(length / MAX_PACKET_LENGTH) + 1;
60-
size = length + (packets * COMPRESSED_PACKET_HEADER_LENGTH);
61-
62-
for (packet = 0; packet < packets; packet++) {
63-
isLast = (packet + 1 === packets);
64-
packetLength = (isLast)
65-
? length % MAX_PACKET_LENGTH
66-
: MAX_PACKET_LENGTH;
67-
68-
var num = parser.incrementCompressedPacketNumber();
69-
var start = packet * MAX_PACKET_LENGTH;
70-
var end = start + packetLength;
71-
72-
this.emit('data', this._toCompressedPacket(num, buffer.slice(start, end)));
73-
}
54+
this.emit('data', buf);
7455
}
7556
};
7657

0 commit comments

Comments
 (0)