Function updateStepStatus [src]

Prototype

pub fn updateStepStatus(ws: *WebServer, step: *Build.Step, new_status: abi.StepUpdate.Status) void

Parameters

ws: *WebServerstep: *Build.Stepnew_status: abi.StepUpdate.Status

Source

pub fn updateStepStatus(ws: *WebServer, step: *Build.Step, new_status: abi.StepUpdate.Status) void { const step_idx: u32 = for (ws.all_steps, 0..) |s, i| { if (s == step) break @intCast(i); } else unreachable; const ptr = &ws.step_status_bits[step_idx / 4]; const bit_offset: u3 = @intCast((step_idx % 4) * 2); const old_bits: u2 = @truncate(@atomicLoad(u8, ptr, .monotonic) >> bit_offset); const mask = @as(u8, @intFromEnum(new_status) ^ old_bits) << bit_offset; _ = @atomicRmw(u8, ptr, .Xor, mask, .monotonic); ws.notifyUpdate(); }