MCPcopy Create free account
hub / github.com/RtlZeroMemory/Rezi / armSabFrameWake

Function armSabFrameWake

packages/node/src/worker/engineWorker/tickLoop.ts:55–116  ·  view source on GitHub ↗
(
  args: Readonly<{
    state: EngineWorkerTickState;
    running: boolean;
    frameTransport: WorkerFrameTransport;
    lastConsumedSabPublishedSeq: number;
    syncPendingSabFrameFromMailbox: () => void;
    scheduleTickNow: () => void;
  }>,
)

Source from the content-addressed store, hash-verified

53}
54
55export function armSabFrameWake(
56 args: Readonly<{
57 state: EngineWorkerTickState;
58 running: boolean;
59 frameTransport: WorkerFrameTransport;
60 lastConsumedSabPublishedSeq: number;
61 syncPendingSabFrameFromMailbox: () => void;
62 scheduleTickNow: () => void;
63 }>,
64): void {
65 if (!args.running) return;
66 if (args.frameTransport.kind !== FRAME_TRANSPORT_SAB_V1) return;
67 if (args.state.sabWakeArmed) return;
68
69 const h = args.frameTransport.controlHeader;
70 const seq = Atomics.load(h, FRAME_SAB_CONTROL_PUBLISHED_SEQ_WORD);
71 if (seq > args.lastConsumedSabPublishedSeq) {
72 args.syncPendingSabFrameFromMailbox();
73 args.scheduleTickNow();
74 return;
75 }
76
77 const epoch = args.state.sabWakeEpoch;
78 const timeoutMs = Math.max(1, args.state.tickIntervalMs);
79 const waitAsync = (
80 Atomics as unknown as {
81 waitAsync?: (
82 typedArray: Int32Array,
83 index: number,
84 value: number,
85 timeout?: number,
86 ) => { async: boolean; value: Promise<unknown> | unknown };
87 }
88 ).waitAsync;
89 if (typeof waitAsync !== "function") return;
90 const waiter = waitAsync(h, FRAME_SAB_CONTROL_PUBLISHED_SEQ_WORD, seq, timeoutMs);
91 if (typeof waiter !== "object" || waiter === null) return;
92
93 if (waiter.async !== true) {
94 if (!args.running) return;
95 if (epoch !== args.state.sabWakeEpoch) return;
96 args.syncPendingSabFrameFromMailbox();
97 args.scheduleTickNow();
98 return;
99 }
100
101 args.state.sabWakeArmed = true;
102 const waiterPromise = waiter.value as Promise<unknown>;
103 void waiterPromise.then(
104 () => {
105 if (epoch !== args.state.sabWakeEpoch) return;
106 args.state.sabWakeArmed = false;
107 if (!args.running) return;
108 args.syncPendingSabFrameFromMailbox();
109 args.scheduleTickNow();
110 },
111 () => {
112 if (epoch !== args.state.sabWakeEpoch) return;

Callers 1

armSabFrameWakeLocalFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected