merge renderer IPC into notebook controller, remove global renderer IPC

This commit is contained in:
Johannes Rieken
2021-04-15 18:41:56 +02:00
parent 68d9e02338
commit bbf148b0c6
10 changed files with 144 additions and 186 deletions

View File

@@ -38,8 +38,6 @@ export class MainThreadNotebookEditors implements MainThreadNotebookEditorsShape
private readonly _proxy: ExtHostNotebookShape;
private readonly _mainThreadEditors = new Map<string, MainThreadNotebook>();
private readonly _rendererIpcHandle = new Map<string, Set<number>>();
private _currentViewColumnInfo?: INotebookEditorViewColumnInfo;
constructor(
@@ -90,16 +88,6 @@ export class MainThreadNotebookEditors implements MainThreadNotebookEditorsShape
});
}));
editorDisposables.add(editor.onDidReceiveMessage(e => {
if (!e.forRenderer) {
return;
}
const handles = this._rendererIpcHandle.get(e.forRenderer);
if (handles) {
this._proxy.$acceptEditorIpcMessage(editor.getId(), e.forRenderer, Array.from(handles), e.message);
}
}));
const wrapper = new MainThreadNotebook(editor, editorDisposables);
this._mainThreadEditors.set(editor.getId(), wrapper);
}
@@ -143,49 +131,7 @@ export class MainThreadNotebookEditors implements MainThreadNotebookEditorsShape
return editor.textModel.applyEdits(cellEdits, true, undefined, () => undefined, undefined);
}
//#region --- IPC
async $addRendererIpc(rendererId: string, handle: number): Promise<void> {
let set = this._rendererIpcHandle.get(rendererId);
if (!set) {
set = new Set();
this._rendererIpcHandle.set(rendererId, set);
}
set.add(handle);
}
$removeRendererIpc(rendererId: string, handle: number): void {
let set = this._rendererIpcHandle.get(rendererId);
if (set) {
set.delete(handle);
if (set.size === 0) {
this._rendererIpcHandle.delete(rendererId);
}
}
}
async $postRendererIpcMessage(rendererId: string, handle: number, editorId: string | undefined, message: unknown): Promise<boolean> {
if (!this._rendererIpcHandle.get(rendererId)?.has(handle)) {
return false;
}
if (editorId) {
const candidate = this._mainThreadEditors.get(editorId);
if (candidate) {
candidate.editor.postMessage(rendererId, message);
return true;
} else {
return false;
}
}
for (const { editor } of this._mainThreadEditors.values()) {
editor.postMessage(rendererId, message);
}
return true;
}
//#endregion
async $tryShowNotebookDocument(resource: UriComponents, viewType: string, options: INotebookDocumentShowOptions): Promise<string> {
const editorOptions = new NotebookEditorOptions({