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 › std/ › Io/ › Threaded.zig › netShutdownPosix
netShutdownPosix
Threaded.netShutdownPosix
fn netShutdownPosix (userdata : ?*anyopaque , handle : net .Socket .Handle , how : net .ShutdownHow ) net .ShutdownError !void
File
Code
fn netShutdownPosix (userdata : ?*anyopaque , handle : net .Socket .Handle , how : net .ShutdownHow ) net .ShutdownError !void {
if (!have_networking ) return error .NetworkDown ;
const t : *Threaded = @ptrCast (@alignCast (userdata ));
_ = t ;
const posix_how : i32 = switch (how ) {
.recv => posix .SHUT .RD ,
.send => posix .SHUT .WR ,
.both => posix .SHUT .RDWR ,
};
const syscall : Syscall = try .start ();
while (true ) {
switch (posix .errno (posix .system .shutdown (handle , posix_how ))) {
.SUCCESS => return syscall .finish (),
.INTR => {
try syscall .checkCancel ();
continue ;
},
else => |e | {
syscall .finish ();
switch (e ) {
.BADF , .NOTSOCK , .INVAL => |err | return errnoBug (err ),
.NOTCONN => return error .SocketUnconnected ,
.NOBUFS => return error .SystemResources ,
else => |err | return posix .unexpectedErrno (err ),
}
},
}
}
}