Implement AXIS parity UI and execution baseline
This commit is contained in:
22
web/react/src/sim-worker-entry.ts
Normal file
22
web/react/src/sim-worker-entry.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import createModule from "../../../build-wasm/linuxcnc-sim-core.js";
|
||||
import { SimSession } from "../../worker/sim-session.mjs";
|
||||
|
||||
// The boot event is a transport diagnostic; it carries no simulation state.
|
||||
self.postMessage({ schema_version: 1, kind: "WORKER_BOOT", context_id: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: "boot", seq: 0, payload: { status: "booting", runtime: "react-vite-worker" } });
|
||||
let session: SimSession | null = null;
|
||||
const queue: MessageEvent[] = [];
|
||||
const handle = (event: MessageEvent) => {
|
||||
try {
|
||||
if (!session) { queue.push(event); return; }
|
||||
self.postMessage(session.accept(event.data));
|
||||
} catch (error) {
|
||||
self.postMessage({ schema_version: 1, kind: "ERROR", context_id: session?.contextId ?? "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: session?.sessionId ?? "boot", seq: event.data?.seq ?? 0, payload: { status: "error", code: "worker_exception", message_key: error instanceof Error ? error.message : String(error), retryable: false } });
|
||||
}
|
||||
};
|
||||
self.onmessage = handle;
|
||||
createModule().then((core) => {
|
||||
session = new SimSession(core);
|
||||
for (const event of queue.splice(0)) handle(event);
|
||||
}).catch((error) => {
|
||||
self.postMessage({ schema_version: 1, kind: "ERROR", context_id: "linuxcnc-2.10.0-pre0-wasm-m1-py-c1", session_id: "boot", seq: 0, payload: { status: "error", code: "worker_wasm_init", message_key: error instanceof Error ? error.message : String(error), retryable: false } });
|
||||
});
|
||||
Reference in New Issue
Block a user