| ... | ... | @@ -2,6 +2,7 @@ const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | const nio = @import("nio"); |
| 4 | 4 | const nfs = @import("nfs"); |
| 5 | const time = @import("time"); |
| 5 | 6 | const sys_linux = @import("sys-linux"); |
| 6 | 7 | |
| 7 | 8 | const os = builtin.target.os.tag; |
| ... | ... | @@ -188,6 +189,22 @@ pub const Stream = struct { |
| 188 | 189 | .state = @ptrFromInt(@intFromEnum(s.socket)), |
| 189 | 190 | }; |
| 190 | 191 | } |
| 192 | |
| 193 | pub fn setSendTimeout(s: Stream, timeout_us: u31) !void { |
| 194 | const timeval: sys.struct_timeval = .{ |
| 195 | .sec = timeout_us / time.us_per_s, |
| 196 | .usec = timeout_us % time.us_per_s, |
| 197 | }; |
| 198 | return sys.setsockopt(@intCast(@intFromEnum(s.socket)), sys.SOL.SOCKET, sys.SO.SNDTIMEO, @ptrCast((&timeval)[0..1])); |
| 199 | } |
| 200 | |
| 201 | pub fn setRecvTimeout(s: Stream, timeout_us: u31) !void { |
| 202 | const timeval: sys.struct_timeval = .{ |
| 203 | .sec = timeout_us / time.us_per_s, |
| 204 | .usec = timeout_us % time.us_per_s, |
| 205 | }; |
| 206 | return sys.setsockopt(@intCast(@intFromEnum(s.socket)), sys.SOL.SOCKET, sys.SO.RCVTIMEO, @ptrCast((&timeval)[0..1])); |
| 207 | } |
| 191 | 208 | }; |
| 192 | 209 | |
| 193 | 210 | pub const Server = struct { |