43
};
44
}
46
>
47
>
export interface Tunnel extends vscode.Disposable {
48
>
remote: { port: number; host: string };
49
>
localAddress: string;
50
>
}
51
>
52
>
export interface IExtHostTunnelService extends ExtHostTunnelServiceShape {
53
>
readonly _serviceBrand: undefined;
54
>
openTunnel(extension: IExtensionDescription, forward: TunnelOptions): Promise<vscode.Tunnel | undefined>;
55
>
getTunnels(): Promise<vscode.TunnelDescription[]>;
56
>
onDidChangeTunnels: vscode.Event<void>;
57
>
setTunnelFactory(provider: vscode.RemoteAuthorityResolver | undefined, managedRemoteAuthority: vscode.ManagedResolvedAuthority | undefined): Promise<IDisposable>;
58
>
registerPortsAttributesProvider(portSelector: PortAttributesSelector, provider: vscode.PortAttributesProvider): IDisposable;
59
>
registerTunnelProvider(provider: vscode.TunnelProvider, information: vscode.TunnelInformation): Promise<IDisposable>;
60
>
hasTunnelProvider(): Promise<boolean>;
61
>
}
62
>
63
>
export const IExtHostTunnelService = createDecorator<IExtHostTunnelService>('IExtHostTunnelService');
64
>
65
>
export class ExtHostTunnelService extends Disposable implements IExtHostTunnelService {
66
>
readonly _serviceBrand: undefined;
67
>
protected readonly _proxy: MainThreadTunnelServiceShape;
68
>
private _forwardPortProvider: ((tunnelOptions: TunnelOptions, tunnelCreationOptions: TunnelCreationOptions, token?: vscode.CancellationToken) => Thenable<vscode.Tunnel | undefined> | undefined) | undefined;
69
>
private _showCandidatePort: (host: string, port: number, detail: string) => Thenable<boolean> = () => { return Promise.resolve(true); };
70
>
private _extensionTunnels: Map<string, Map<number, { tunnel: vscode.Tunnel; disposeListener: IDisposable }>> = new Map();
71
>
private _onDidChangeTunnels: Emitter<void> = this._register(new Emitter<void>());
72
>
onDidChangeTunnels: vscode.Event<void> = this._onDidChangeTunnels.event;
73
>
74
>
private _providerHandleCounter: number = 0;
75
>
private _portAttributesProviders: Map<number, { provider: vscode.PortAttributesProvider; selector: PortAttributesSelector }> = new Map();
76
>
77
>
constructor(
78
@IExtHostRpcService extHostRpc: IExtHostRpcService,
79
@IExtHostInitDataService initData: IExtHostInitDataService,