Outline the plan

This commit is contained in:
Manav Rathi 2024-04-15 12:41:17 +05:30
parent 3ea4879cf0
commit 0161739bc0
No known key found for this signature in database
2 changed files with 22 additions and 1 deletions

View file

@ -212,6 +212,25 @@ const setupTrayItem = (mainWindow: BrowserWindow) => {
tray.setContextMenu(createTrayContextMenu(mainWindow));
};
/**
* Register a protocol handler that we use for streaming large files between the
* main process (node) and the renderer process (browser) layer.
*
* [Note: IPC streams]
*
* When running without node integration, there is no direct way to pass streams
* across IPC. And passing the entire contents of the file is not feasible for
* large video files because of the memory pressure the copying would entail.
*
* As an alternative, we register a custom protocol handler that can provided a
* bi-directional stream. The renderer can stream data to the node side by
* streaming the request. The node side can stream to the renderer side by
* streaming the response.
*
* See also: [Note: Transferring large amount of data over IPC]
*/
const registerStreamProtocol = () => {};
/**
* Older versions of our app used to maintain a cache dir using the main
* process. This has been deprecated in favor of using a normal web cache.
@ -278,6 +297,7 @@ const main = () => {
handleDownloads(mainWindow);
handleExternalLinks(mainWindow);
addAllowOriginHeader(mainWindow);
registerStreamProtocol();
try {
deleteLegacyDiskCacheDirIfExists();

View file

@ -300,7 +300,8 @@ const getDirFiles = (dirPath: string): Promise<ElectronFile[]> =>
// https://www.electronjs.org/docs/latest/api/context-bridge#methods
//
// The copy itself is relatively fast, but the problem with transfering large
// amounts of data is potentially running out of memory during the copy.
// amounts of data is potentially running out of memory during the copy. For an
// alternative, see [Note: IPC streams].
contextBridge.exposeInMainWorld("electron", {
// - General
appVersion,