mirror of
https://github.com/Krafpy/KSP-MGA-Planner.git
synced 2026-01-19 08:01:42 -08:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
"use strict";
|
|
function sendProgress(progress, data) {
|
|
postMessageSafe({ label: "progress", progress, data });
|
|
}
|
|
function debug(...data) {
|
|
postMessageSafe({ label: "debug", data: data });
|
|
}
|
|
function sendResult(result) {
|
|
postMessageSafe({ label: "complete", result: result });
|
|
}
|
|
function postMessageSafe(msg) {
|
|
postMessage(msg);
|
|
}
|
|
class WorkerEnvironment {
|
|
onWorkerInitialize(data) { }
|
|
onWorkerRun(input) { }
|
|
onWorkerContinue(input) { }
|
|
onWorkerStop() { }
|
|
onWorkerDataPass(data) { }
|
|
}
|
|
function initWorker(Env) {
|
|
const env = new Env();
|
|
onmessage = ({ data }) => {
|
|
switch (data.label) {
|
|
case "initialize":
|
|
env.onWorkerInitialize(data.config);
|
|
postMessageSafe({ label: "initialized" });
|
|
break;
|
|
case "run":
|
|
env.onWorkerRun(data.input);
|
|
break;
|
|
case "continue":
|
|
env.onWorkerContinue();
|
|
break;
|
|
case "stop":
|
|
env.onWorkerStop();
|
|
postMessageSafe({ label: "stopped" });
|
|
break;
|
|
case "pass":
|
|
env.onWorkerDataPass(data.data);
|
|
postMessageSafe({ label: "received" });
|
|
break;
|
|
}
|
|
};
|
|
}
|