in adapter/src/protocol.ts [210:248]
private _handleData(data: Buffer): void {
this._rawData = Buffer.concat([this._rawData, data]);
while (true) {
if (this._contentLength >= 0) {
if (this._rawData.length >= this._contentLength) {
const message = this._rawData.toString('utf8', 0, this._contentLength);
this._rawData = this._rawData.slice(this._contentLength);
this._contentLength = -1;
if (message.length > 0) {
try {
let msg: DebugProtocol.ProtocolMessage = JSON.parse(message);
this.handleMessage(msg);
}
catch (e) {
this._emitEvent(new Event('error', 'Error handling data: ' + (e && e.message)));
}
}
continue; // there may be more complete messages to process
}
} else {
const idx = this._rawData.indexOf(ProtocolServer.TWO_CRLF);
if (idx !== -1) {
const header = this._rawData.toString('utf8', 0, idx);
const lines = header.split('\r\n');
for (let i = 0; i < lines.length; i++) {
const pair = lines[i].split(/: +/);
if (pair[0] == 'Content-Length') {
this._contentLength = +pair[1];
}
}
this._rawData = this._rawData.slice(idx + ProtocolServer.TWO_CRLF.length);
continue;
}
}
break;
}
}