diff --git a/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts b/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts index 0980eec33e53d0ad9d145eeeb69936d18a340ba7..19b6202970dade092a547aa61e6e0eeab5244d9a 100644 --- a/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts +++ b/src/vs/workbench/services/remote/common/abstractRemoteAgentService.ts @@ -18,6 +18,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { RemoteExtensionEnvironmentChannelClient } from 'vs/workbench/services/remote/common/remoteAgentEnvironmentChannel'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IDiagnosticInfoOptions, IDiagnosticInfo } from 'vs/platform/diagnostics/common/diagnosticsService'; +import { Emitter } from 'vs/base/common/event'; export abstract class AbstractRemoteAgentService extends Disposable implements IRemoteAgentService { @@ -59,6 +60,9 @@ export abstract class AbstractRemoteAgentService extends Disposable implements I export class RemoteAgentConnection extends Disposable implements IRemoteAgentConnection { + private readonly _onReconnecting = this._register(new Emitter()); + public readonly onReconnecting = this._onReconnecting.event; + readonly remoteAuthority: string; private _connection: Promise> | null; @@ -90,12 +94,18 @@ export class RemoteAgentConnection extends Disposable implements IRemoteAgentCon } private async _createConnection(): Promise> { + let firstCall = true; const options: IConnectionOptions = { isBuilt: this._environmentService.isBuilt, commit: this._commit, webSocketFactory: this._webSocketFactory, addressProvider: { getAddress: async () => { + if (firstCall) { + firstCall = false; + } else { + this._onReconnecting.fire(undefined); + } const { host, port } = await this._remoteAuthorityResolverService.resolveAuthority(this.remoteAuthority); return { host, port }; } diff --git a/src/vs/workbench/services/remote/common/remoteAgentService.ts b/src/vs/workbench/services/remote/common/remoteAgentService.ts index 5a097b98f1e3bdd72fb3aedebb70105e1d3405de..96ae3f5c13fcc52da21dc90878701ee576ac4640 100644 --- a/src/vs/workbench/services/remote/common/remoteAgentService.ts +++ b/src/vs/workbench/services/remote/common/remoteAgentService.ts @@ -7,6 +7,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { RemoteAgentConnectionContext, IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; import { IChannel, IServerChannel } from 'vs/base/parts/ipc/common/ipc'; import { IDiagnosticInfoOptions, IDiagnosticInfo } from 'vs/platform/diagnostics/common/diagnosticsService'; +import { Event } from 'vs/base/common/event'; export const RemoteExtensionLogFileName = 'remoteagent'; @@ -25,4 +26,5 @@ export interface IRemoteAgentConnection { getChannel(channelName: string): T; registerChannel>(channelName: string, channel: T): void; + onReconnecting: Event; }