mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-16 15:40:02 -04:00
threads 🚀🚀🚀
This commit is contained in:
parent
b06605dc52
commit
d433f67d67
8 changed files with 179 additions and 26 deletions
46
src/thread/thread.ts
Normal file
46
src/thread/thread.ts
Normal file
|
@ -0,0 +1,46 @@
|
|||
import { rewriteJs } from "../shared/rewriters/js";
|
||||
|
||||
|
||||
|
||||
// @ts-ignore
|
||||
onconnect = (e) => {
|
||||
const port = e.ports[0];
|
||||
|
||||
|
||||
console.log("thread: connected to port", port)
|
||||
port.postMessage("ready");
|
||||
|
||||
let syncToken = 0;
|
||||
port.onmessage = ({ data }) => {
|
||||
console.log("thread: received message", data)
|
||||
const [task, ...args] = data;
|
||||
let token = syncToken++;
|
||||
|
||||
try {
|
||||
let res = tasks[task](...args);
|
||||
console.log("thread: task", task, "completed with token", token)
|
||||
port.postMessage({
|
||||
token,
|
||||
result: res
|
||||
})
|
||||
} catch (e) {
|
||||
port.postMessage({
|
||||
token,
|
||||
error: e.message
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
port.postMessage("idle");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const tasks = {
|
||||
"rewriteJs": taskRewriteJs,
|
||||
}
|
||||
|
||||
|
||||
function taskRewriteJs(js: ArrayBuffer, origin: string): string {
|
||||
return rewriteJs(js, new URL(origin));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue