diff --git a/src/vs/platform/terminal/node/ptyService.ts b/src/vs/platform/terminal/node/ptyService.ts index 3ac6e28dca4..d2c85301bb9 100644 --- a/src/vs/platform/terminal/node/ptyService.ts +++ b/src/vs/platform/terminal/node/ptyService.ts @@ -282,19 +282,19 @@ export class PersistentTerminalProcess extends Disposable { // console.trace(`data ${e}`); this._recorder.recordData(e); })); - this._register(this._terminalProcess.onProcessExit(exitCode => { - this._logService.info(`exiting ${exitCode}`); - // this._bufferer.stopBuffering(this._persistentTerminalId); + // this._register(this._terminalProcess.onProcessExit(exitCode => { + // this._bufferer.stopBuffering(this._persistentTerminalId); - // const ev: IPtyHostProcessExitEvent = { - // type: 'exit', - // exitCode: exitCode - // }; - // this._events.fire(ev); + // // const ev: IPtyHostProcessExitEvent = { + // // type: 'exit', + // // exitCode: exitCode + // // }; + // // this._events.fire(ev); - // Remove process reference - this._onExit(); - })); + // // Remove process reference + // // TODO: Use an event + // this._onExit(); + // })); } acknowledgeDataEvent(charCount: number): void { throw new Error('Method not implemented.'); diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index e464db3fd75..760c725cf6b 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -10,7 +10,6 @@ import { ExtHostConfigProvider } from 'vs/workbench/api/common/extHostConfigurat import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { URI, UriComponents } from 'vs/base/common/uri'; import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; -import { TerminalDataBufferer } from 'vs/workbench/contrib/terminal/common/terminalDataBuffering'; import { IDisposable, DisposableStore, Disposable } from 'vs/base/common/lifecycle'; import { Disposable as VSCodeDisposable, EnvironmentVariableMutatorType } from './extHostTypes'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; @@ -21,6 +20,7 @@ import { CancellationTokenSource } from 'vs/base/common/cancellation'; import { generateUuid } from 'vs/base/common/uuid'; import { ISerializableEnvironmentVariableCollection } from 'vs/workbench/contrib/terminal/common/environmentVariable'; import { ITerminalChildProcess, ITerminalDimensionsOverride, ITerminalLaunchError } from 'vs/platform/terminal/common/terminal'; +import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; export interface IExtHostTerminalService extends ExtHostTerminalServiceShape, IDisposable { diff --git a/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts b/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts deleted file mode 100644 index 3c44f49c4da..00000000000 --- a/src/vs/workbench/contrib/terminal/common/terminalDataBuffering.ts +++ /dev/null @@ -1,65 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Event } from 'vs/base/common/event'; -import { IDisposable } from 'vs/base/common/lifecycle'; -import { IProcessDataEvent } from 'vs/platform/terminal/common/terminal'; -interface TerminalDataBuffer extends IDisposable { - data: string[]; - timeoutId: any; -} -export class TerminalDataBufferer implements IDisposable { - private readonly _terminalBufferMap = new Map(); - - constructor(private readonly _callback: (id: number, data: string) => void) { - } - - dispose() { - for (const buffer of this._terminalBufferMap.values()) { - buffer.dispose(); - } - } - - startBuffering(id: number, event: Event, throttleBy: number = 5): IDisposable { - let disposable: IDisposable; - disposable = event((e: string | IProcessDataEvent) => { - const data = (typeof e === 'string' ? e : e.data); - let buffer = this._terminalBufferMap.get(id); - if (buffer) { - buffer.data.push(data); - - return; - } - - const timeoutId = setTimeout(() => this._flushBuffer(id), throttleBy); - buffer = { - data: [data], - timeoutId: timeoutId, - dispose: () => { - clearTimeout(timeoutId); - this._flushBuffer(id); - disposable.dispose(); - } - }; - this._terminalBufferMap.set(id, buffer); - }); - return disposable; - } - - stopBuffering(id: number) { - const buffer = this._terminalBufferMap.get(id); - if (buffer) { - buffer.dispose(); - } - } - - private _flushBuffer(id: number): void { - const buffer = this._terminalBufferMap.get(id); - if (buffer) { - this._terminalBufferMap.delete(id); - this._callback(id, buffer.data.join('')); - } - } -} diff --git a/src/vs/workbench/contrib/terminal/test/common/terminalDataBuffering.test.ts b/src/vs/workbench/contrib/terminal/test/common/terminalDataBuffering.test.ts index 6a2e3b93b21..fe56ae5a7d8 100644 --- a/src/vs/workbench/contrib/terminal/test/common/terminalDataBuffering.test.ts +++ b/src/vs/workbench/contrib/terminal/test/common/terminalDataBuffering.test.ts @@ -5,7 +5,7 @@ import * as assert from 'assert'; import { Emitter } from 'vs/base/common/event'; -import { TerminalDataBufferer } from 'vs/workbench/contrib/terminal/common/terminalDataBuffering'; +import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; const wait = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));