MCPcopy Index your code
hub / github.com/microsoft/vscode-cpptools / CppTools

Class CppTools

Extension/src/cppTools.ts:18–130  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16const localize: nls.LocalizeFunc = nls.loadMessageBundle();
17
18export class CppTools implements CppToolsTestApi {
19 private version: Version;
20 private providers: CustomConfigurationProvider1[] = [];
21 private failedRegistrations: CustomConfigurationProvider[] = [];
22 private timers = new Map<string, NodeJS.Timeout>();
23
24 constructor(version: Version) {
25 if (version > Version.latest) {
26 console.warn(`version ${version} is not supported by this version of cpptools`);
27 console.warn(` using ${Version.latest} instead`);
28 version = Version.latest;
29 }
30 this.version = version;
31 }
32
33 private addNotifyReadyTimer(provider: CustomConfigurationProvider1): void {
34 if (this.version >= Version.v2) {
35 const timeout: number = 30;
36 const timer: NodeJS.Timeout = global.setTimeout(() => {
37 console.warn(`registered provider ${provider.extensionId} did not call 'notifyReady' within ${timeout} seconds`);
38 }, timeout * 1000);
39 this.timers.set(provider.extensionId, timer);
40 }
41 }
42
43 private removeNotifyReadyTimer(provider: CustomConfigurationProvider1): void {
44 if (this.version >= Version.v2) {
45 const timer: NodeJS.Timeout | undefined = this.timers.get(provider.extensionId);
46 if (timer) {
47 this.timers.delete(provider.extensionId);
48 clearTimeout(timer);
49 }
50 }
51 }
52
53 public getVersion(): Version {
54 return this.version;
55 }
56
57 public registerCustomConfigurationProvider(provider: CustomConfigurationProvider): void {
58 const providers: CustomConfigurationProviderCollection = getCustomConfigProviders();
59 if (providers.add(provider, this.version)) {
60 const added: CustomConfigurationProvider1 | undefined = providers.get(provider);
61 if (added) {
62 getOutputChannelLogger().appendLineAtLevel(5, localize("provider.registered", "Custom configuration provider '{0}' registered", added.name));
63 this.providers.push(added);
64 LanguageServer.getClients().forEach(client => void client.onRegisterCustomConfigurationProvider(added));
65 this.addNotifyReadyTimer(added);
66 }
67 } else {
68 this.failedRegistrations.push(provider);
69 }
70 }
71
72 public notifyReady(provider: CustomConfigurationProvider): void {
73 const providers: CustomConfigurationProviderCollection = getCustomConfigProviders();
74 const p: CustomConfigurationProvider1 | undefined = providers.get(provider);
75

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected