MCPcopy Create free account
hub / github.com/deepnote/vscode-deepnote / registerKernelFinder

Method registerKernelFinder

src/kernels/kernelFinder.ts:52–85  ·  view source on GitHub ↗
(finder: IContributedKernelFinder<KernelConnectionMetadata>)

Source from the content-addressed store, hash-verified

50 }
51
52 public registerKernelFinder(finder: IContributedKernelFinder<KernelConnectionMetadata>): IDisposable {
53 this._finders.push(finder);
54 const updateStatus = () => {
55 // If all finders are idle, then we are idle.
56 this.status = this._finders.every((f) => f.status === 'idle') ? 'idle' : 'discovering';
57 };
58
59 updateStatus();
60 const disposables = this._register(new DisposableStore());
61
62 const disposeKernel = () => {
63 const removeIndex = this._finders.findIndex((listFinder) => listFinder === finder);
64 if (removeIndex >= 0) {
65 this._finders.splice(removeIndex, 1);
66 }
67 disposables.dispose();
68 updateStatus();
69
70 // Notify that kernels have changed
71 this._onDidChangeKernels.fire();
72 this._onDidChangeRegistrations.fire({ added: [], removed: [finder] });
73 };
74
75 disposables.add(finder.onDidChangeStatus(updateStatus, this));
76 disposables.add(finder.onDidChangeKernels(() => this._onDidChangeKernels.fire()));
77 disposables.add(finder.onDidDispose(() => disposeKernel()));
78
79 // Registering a new kernel finder should notify of possible kernel changes
80 this._onDidChangeKernels.fire();
81 this._onDidChangeRegistrations.fire({ added: [finder], removed: [] });
82
83 // Register a disposable so kernel finders can remove themselves from the list if they are disposed
84 return new Disposable(() => disposeKernel());
85 }
86
87 public get kernels(): KernelConnectionMetadata[] {
88 const kernels: KernelConnectionMetadata[] = [];

Callers 5

constructorMethod · 0.80
constructorMethod · 0.80
constructorMethod · 0.80

Calls 6

onDidChangeKernelsMethod · 0.80
onDidDisposeMethod · 0.80
pushMethod · 0.65
addMethod · 0.65
onDidChangeStatusMethod · 0.45
fireMethod · 0.45

Tested by

no test coverage detected