Move pty host from shared to main proc

This commit is contained in:
Daniel Imms
2023-03-31 11:21:14 -07:00
parent 86b75c2cab
commit d600b2e196
11 changed files with 109 additions and 60 deletions
@@ -7,7 +7,6 @@
// TODO@bpasero remove these once utility process is the only way
import { Server as BrowserWindowMessagePortServer } from 'vs/base/parts/ipc/electron-browser/ipc.mp';
import { SharedProcessWorkerService } from 'vs/platform/sharedProcess/electron-browser/sharedProcessWorkerService';
import { ILocalPtyService } from 'vs/platform/terminal/electron-sandbox/terminal';
import { hostname, release } from 'os';
import { toErrorMessage } from 'vs/base/common/errorMessage';
@@ -62,8 +61,6 @@ import { TelemetryLogAppender } from 'vs/platform/telemetry/common/telemetryLogA
import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService';
import { supportsTelemetry, ITelemetryAppender, NullAppender, NullTelemetryService, getPiiPathsFromEnvironment, isInternalTelemetry } from 'vs/platform/telemetry/common/telemetryUtils';
import { CustomEndpointTelemetryService } from 'vs/platform/telemetry/node/customEndpointTelemetryService';
import { LocalReconnectConstants, TerminalIpcChannels, TerminalSettingId } from 'vs/platform/terminal/common/terminal';
import { PtyHostService } from 'vs/platform/terminal/node/ptyHostService';
import { ExtensionStorageService, IExtensionStorageService } from 'vs/platform/extensionManagement/common/extensionStorage';
import { IgnoredExtensionsManagementService, IIgnoredExtensionsManagementService } from 'vs/platform/userDataSync/common/ignoredExtensions';
import { IUserDataSyncBackupStoreService, IUserDataSyncLogService, IUserDataSyncEnablementService, IUserDataSyncService, IUserDataSyncStoreManagementService, IUserDataSyncStoreService, IUserDataSyncUtilService, registerConfiguration as registerUserDataSyncConfiguration, IUserDataSyncResourceProviderService } from 'vs/platform/userDataSync/common/userDataSync';
@@ -119,7 +116,6 @@ import { UserDataAutoSyncService } from 'vs/platform/userDataSync/node/userDataA
import { ExtensionTipsService } from 'vs/platform/extensionManagement/node/extensionTipsService';
import { IMainProcessService, MainProcessService } from 'vs/platform/ipc/common/mainProcessService';
import { RemoteStorageService } from 'vs/platform/storage/common/storageService';
import { NodePtyHostStarter } from 'vs/platform/terminal/node/nodePtyHostStarter';
class SharedProcessMain extends Disposable {
@@ -379,22 +375,6 @@ class SharedProcessMain extends Disposable {
services.set(IUserDataProfileStorageService, new SyncDescriptor(NativeUserDataProfileStorageService, undefined, true));
services.set(IUserDataSyncResourceProviderService, new SyncDescriptor(UserDataSyncResourceProviderService, undefined, true));
// Terminal
const ptyHostStarter = new NodePtyHostStarter({
graceTime: LocalReconnectConstants.GraceTime,
shortGraceTime: LocalReconnectConstants.ShortGraceTime,
scrollback: configurationService.getValue<number>(TerminalSettingId.PersistentSessionScrollback) ?? 100
}, false, environmentService);
const ptyHostService = new PtyHostService(
ptyHostStarter,
configurationService,
logService,
loggerService
);
ptyHostService.initialize();
services.set(ILocalPtyService, this._register(ptyHostService));
// Signing
services.set(ISignService, new SyncDescriptor(SignService, undefined, false /* proxied to other processes */));
@@ -455,11 +435,6 @@ class SharedProcessMain extends Disposable {
const userDataAutoSyncChannel = new UserDataAutoSyncChannel(userDataAutoSync);
this.server.registerChannel('userDataAutoSync', userDataAutoSyncChannel);
// Terminal
const localPtyService = accessor.get(ILocalPtyService);
const localPtyChannel = ProxyChannel.fromService(localPtyService);
this.server.registerChannel(TerminalIpcChannels.LocalPty, localPtyChannel);
// Tunnel
const sharedProcessTunnelChannel = ProxyChannel.fromService(accessor.get(ISharedProcessTunnelService));
this.server.registerChannel(ipcSharedProcessTunnelChannelName, sharedProcessTunnelChannel);