ptyHostMain.ts 1.8 KB
Newer Older
D
Daniel Imms 已提交
1 2 3 4 5 6 7
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { Server } from 'vs/base/parts/ipc/node/ipc.cp';
import { ProxyChannel } from 'vs/base/parts/ipc/common/ipc';
8
import { PtyService } from 'vs/platform/terminal/node/ptyService';
9
import { TerminalIpcChannels } from 'vs/platform/terminal/common/terminal';
D
Daniel Imms 已提交
10 11
import { ConsoleLogger, LogService } from 'vs/platform/log/common/log';
import { LogLevelChannel } from 'vs/platform/log/common/logIpc';
12
import { HeartbeatService } from 'vs/platform/terminal/node/heartbeatService';
D
Daniel Imms 已提交
13 14

const server = new Server('ptyHost');
D
Daniel Imms 已提交
15

16 17 18
const lastPtyId = parseInt(process.env.VSCODE_LAST_PTY_ID || '0');
delete process.env.VSCODE_LAST_PTY_ID;

D
Daniel Imms 已提交
19 20 21 22
const logService = new LogService(new ConsoleLogger());
const logChannel = new LogLevelChannel(logService);
server.registerChannel(TerminalIpcChannels.Log, logChannel);

23 24 25
const heartbeatService = new HeartbeatService();
server.registerChannel(TerminalIpcChannels.Heartbeat, ProxyChannel.fromService(heartbeatService));

26 27 28 29 30
const reconnectConstants = { GraceTime: parseInt(process.env.VSCODE_RECONNECT_GRACE_TIME || '0'), ShortGraceTime: parseInt(process.env.VSCODE_RECONNECT_SHORT_GRACE_TIME || '0') };
delete process.env.VSCODE_RECONNECT_GRACE_TIME;
delete process.env.VSCODE_RECONNECT_SHORT_GRACE_TIME;

const ptyService = new PtyService(lastPtyId, logService, reconnectConstants);
31
server.registerChannel(TerminalIpcChannels.PtyHost, ProxyChannel.fromService(ptyService));
32 33 34

process.once('exit', () => {
	logService.dispose();
35 36
	heartbeatService.dispose();
	ptyService.dispose();
37
});