Skip to content

Commit edf7a55

Browse files
committed
clarify ipc messages
1 parent 3543a22 commit edf7a55

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ async function main(server: Server, initData: ISharedProcessInitData, configurat
103103

104104
const onExit = () => disposables.dispose();
105105
process.once('exit', onExit);
106-
ipcRenderer.once('handshake:mainprocess-goodbye', onExit);
106+
ipcRenderer.once('electron-main->shared-process: exit', onExit);
107107

108108
disposables.add(server);
109109

@@ -280,18 +280,19 @@ function setupIPC(hook: string): Promise<Server> {
280280

281281
async function handshake(configuration: ISharedProcessConfiguration): Promise<void> {
282282

283-
// shared process -> main: give me payload for IPC connection
284-
// main -> shared process: payload for IPC connection
283+
// receive payload from electron-main to start things
285284
const data = await new Promise<ISharedProcessInitData>(c => {
286-
ipcRenderer.once('handshake:main-payload', (_: any, r: ISharedProcessInitData) => c(r));
287-
ipcRenderer.send('handshake:sharedprocess-hello');
285+
ipcRenderer.once('electron-main->shared-process: payload', (_: any, r: ISharedProcessInitData) => c(r));
286+
287+
// tell electron-main we are ready to receive payload
288+
ipcRenderer.send('shared-process->electron-main: ready-for-payload');
288289
});
289290

290-
// shared process => main: IPC connection established
291+
// await IPC connection and signal this back to electron-main
291292
const server = await setupIPC(data.sharedIPCHandle);
292-
ipcRenderer.send('handshake:sharedprocess-ipc-ready');
293+
ipcRenderer.send('shared-process->electron-main: ipc-ready');
293294

294-
// shared process => main: initialization done
295+
// await initialization and signal this back to electron-main
295296
await main(server, data, configuration);
296-
ipcRenderer.send('handshake:sharedprocess-init-ready');
297+
ipcRenderer.send('shared-process->electron-main: init-done');
297298
}

src/vs/code/electron-main/sharedProcess.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ export class SharedProcess implements ISharedProcess {
3131
@ILogService private readonly logService: ILogService,
3232
@IThemeMainService private readonly themeMainService: IThemeMainService
3333
) {
34-
this._whenReady = new Promise<void>(c => ipcMain.once('handshake:sharedprocess-init-ready', () => c(undefined)));
34+
// overall ready promise when shared process signals initialization is done
35+
this._whenReady = new Promise<void>(c => ipcMain.once('shared-process->electron-main: init-done', () => c(undefined)));
3536
}
3637

3738
@memoize
@@ -102,16 +103,19 @@ export class SharedProcess implements ISharedProcess {
102103
});
103104

104105
return new Promise<void>(c => {
105-
const onHello = Event.once(Event.fromNodeEventEmitter(ipcMain, 'handshake:sharedprocess-hello', ({ sender }: { sender: WebContents }) => sender));
106-
disposables.add(onHello(sender => {
107-
sender.send('handshake:main-payload', {
106+
// send payload once shared process is ready to receive it
107+
disposables.add(Event.once(Event.fromNodeEventEmitter(ipcMain, 'shared-process->electron-main: ready-for-payload', ({ sender }: { sender: WebContents }) => sender))(sender => {
108+
sender.send('electron-main->shared-process: payload', {
108109
sharedIPCHandle: this.environmentService.sharedIPCHandle,
109110
args: this.environmentService.args,
110111
logLevel: this.logService.getLevel()
111112
});
112113

113-
disposables.add(toDisposable(() => sender.send('handshake:mainprocess-goodbye')));
114-
ipcMain.once('handshake:sharedprocess-ipc-ready', () => c(undefined));
114+
// signal exit to shared process when we get disposed
115+
disposables.add(toDisposable(() => sender.send('electron-main->shared-process: exit')));
116+
117+
// complete IPC-ready promise when shared process signals this to us
118+
ipcMain.once('shared-process->electron-main: ipc-ready', () => c(undefined));
115119
}));
116120
});
117121
}

0 commit comments

Comments
 (0)