Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › compiler/ › Maker/ › WebServer.zig › recvWebSocketMessages
recvWebSocketMessages
WebServer.recvWebSocketMessages
fn recvWebSocketMessages (ws : *WebServer , sock : *http .Server .WebSocket ) void
File
Code
fn recvWebSocketMessages (ws : *WebServer , sock : *http .Server .WebSocket ) void {
const graph = ws .graph ;
const io = graph .io ;
while (true ) {
const msg = sock .readSmallMessage () catch return ;
if (msg .opcode != .binary ) continue ;
if (msg .data .len == 0 ) continue ;
const tag : abi .ToServerTag = @fromBackingInt (@intCast (msg .data [0 ]));
switch (tag ) {
_ => continue ,
.rebuild => while (true ) {
ws .runner_request_mutex .lock (io ) catch |err | switch (err ) {
error .Canceled => return ,
};
defer ws .runner_request_mutex .unlock (io );
if (ws .runner_request == null ) {
ws .runner_request = .rebuild ;
ws .runner_request_ready_cond .signal (io );
break ;
}
ws .runner_request_empty_cond .wait (io , &ws .runner_request_mutex ) catch return ;
},
}
}
}