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/ › std-docs.zig › accept
accept
std-docs.accept
fn accept (context : *Context , stream : Io .net .Stream ) void
File
Code
fn accept (context : *Context , stream : Io .net .Stream ) void {
const io = context .io ;
defer stream .close (io );
var recv_buffer : [4000 ]u8 = undefined ;
var send_buffer : [4000 ]u8 = undefined ;
var conn_reader = stream .reader (io , &recv_buffer );
var conn_writer = stream .writer (io , &send_buffer );
var server = std .http .Server .init (&conn_reader .interface , &conn_writer .interface );
while (server .reader .state == .ready ) {
var request = server .receiveHead () catch |err | switch (err ) {
error .HttpConnectionClosing => return ,
else => {
std .log .err ("closing http connection: {t}" , .{err });
return ;
},
};
serveRequest (&request , context ) catch |err | switch (err ) {
error .WriteFailed => {
if (conn_writer .err ) |e | {
std .log .err ("unable to serve {s}: {t}" , .{ request .head .target , e });
} else {
std .log .err ("unable to serve {s}: {t}" , .{ request .head .target , err });
}
return ;
},
else => {
std .log .err ("unable to serve {s}: {t}" , .{ request .head .target , err });
return ;
},
};
}
}