diff --git a/src/vs/workbench/services/extensions/node/rpcProtocol.ts b/src/vs/workbench/services/extensions/node/rpcProtocol.ts index b58fa9b22d665eb6185217372d87853f2e36e45a..61d4259a78af185b5728b2de18df7899fbbb8973 100644 --- a/src/vs/workbench/services/extensions/node/rpcProtocol.ts +++ b/src/vs/workbench/services/extensions/node/rpcProtocol.ts @@ -122,42 +122,23 @@ export class RPCProtocol { class RPCMultiplexer { private readonly _protocol: IMessagePassingProtocol; - private readonly _onMessage: (msg: string) => void; - private readonly _receiveOneMessageBound: () => void; private readonly _sendAccumulatedBound: () => void; private _messagesToSend: string[]; - private _messagesToReceive: string[]; constructor(protocol: IMessagePassingProtocol, onMessage: (msg: string) => void) { this._protocol = protocol; - this._onMessage = onMessage; - this._receiveOneMessageBound = this._receiveOneMessage.bind(this); this._sendAccumulatedBound = this._sendAccumulated.bind(this); this._messagesToSend = []; - this._messagesToReceive = []; this._protocol.onMessage(data => { - // console.log('RECEIVED ' + rawmsg.length + ' MESSAGES.'); - if (this._messagesToReceive.length === 0) { - process.nextTick(this._receiveOneMessageBound); + for (let i = 0, len = data.length; i < len; i++) { + onMessage(data[i]); } - - this._messagesToReceive = this._messagesToReceive.concat(data); }); } - private _receiveOneMessage(): void { - const rawmsg = this._messagesToReceive.shift(); - - if (this._messagesToReceive.length > 0) { - process.nextTick(this._receiveOneMessageBound); - } - - this._onMessage(rawmsg); - } - private _sendAccumulated(): void { const tmp = this._messagesToSend; this._messagesToSend = [];