HomePhabricator
Diffusion Comm 3de89fd327d0

[web-db] implement proxy for promise-based connection with worker

Description

[web-db] implement proxy for promise-based connection with worker

Summary:
Abstraction layer over native event-based communication.

Depends on D6991

Test Plan:
Run this code:

const rawWebDbWorker = new SharedWorker('/worker/webDatabase');
const webDBWorker = new WorkerConnectionProxy(
  rawWebDbWorker.port,
  error => {
    console.error(error);
  },
);
const workerResult = await webDBWorker.scheduleOnWorker({
  type: workerRequestMessageTypes.PING,
  text: 'PING',
});
console.log('result: ', workerResult);

const combinedResult = await Promise.all([
  webDBWorker.scheduleOnWorker({
    type: workerRequestMessageTypes.PING,
    text: 'PING',
  }),
  webDBWorker.scheduleOnWorker({
    type: workerRequestMessageTypes.PING,
    text: 'PING',
  }),
  webDBWorker.scheduleOnWorker({
    type: workerRequestMessageTypes.PING,
    text: 'PING',
  }),
  webDBWorker.scheduleOnWorker({
    type: workerRequestMessageTypes.PING,
    text: 'PING',
  }),
]);
console.log(combinedResult);

and check results in browser, desktop, and shared worker consoles.
Also test throwing errors.

Reviewers: michal, tomek

Reviewed By: michal

Subscribers: ashoat, atul

Differential Revision: https://phab.comm.dev/D6992

Details

Provenance
kamilAuthored on Mar 2 2023, 6:57 AM
Reviewer
michal
Differential Revision
D6992: [web-db] implement proxy for promise-based connection with worker
Parents
rCOMM661a2b6b9ccd: [web-db] implement basic app-worker connection types
Branches
Unknown
Tags
Unknown