| ... | @@ -1118,8 +1118,14 @@ pub const Socket = struct { | ... | @@ -1118,8 +1118,14 @@ pub const Socket = struct { |
| 1118 | /// See also: | 1118 | /// See also: |
| 1119 | /// * `receiveTimeout` | 1119 | /// * `receiveTimeout` |
| 1120 | pub fn receive(s: *const Socket, io: Io, buffer: []u8) ReceiveError!IncomingMessage { | 1120 | pub fn receive(s: *const Socket, io: Io, buffer: []u8) ReceiveError!IncomingMessage { |
| 1121 | var message: IncomingMessage = undefined; | 1121 | var message: IncomingMessage = .init; |
| 1122 | assert(1 == try io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, .none)); | 1122 | const maybe_err, const count = io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, .none); |
| | 1123 | if (maybe_err) |err| switch (err) { |
| | 1124 | // No timeout is passed to `netReceieve`, so it must not return timeout related errors. |
| | 1125 | error.Timeout, error.UnsupportedClock => unreachable, |
| | 1126 | else => |e| return e, |
| | 1127 | }; |
| | 1128 | assert(1 == count); |
| 1123 | return message; | 1129 | return message; |
| 1124 | } | 1130 | } |
| 1125 | | 1131 | |
| ... | @@ -1138,8 +1144,10 @@ pub const Socket = struct { | ... | @@ -1138,8 +1144,10 @@ pub const Socket = struct { |
| 1138 | buffer: []u8, | 1144 | buffer: []u8, |
| 1139 | timeout: Io.Timeout, | 1145 | timeout: Io.Timeout, |
| 1140 | ) ReceiveTimeoutError!IncomingMessage { | 1146 | ) ReceiveTimeoutError!IncomingMessage { |
| 1141 | var message: IncomingMessage = undefined; | 1147 | var message: IncomingMessage = .init; |
| 1142 | assert(1 == try io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, timeout)); | 1148 | const maybe_err, const count = io.vtable.netReceive(io.userdata, s.handle, (&message)[0..1], buffer, .{}, timeout); |
| | 1149 | if (maybe_err) |err| return err; |
| | 1150 | assert(1 == count); |
| 1143 | return message; | 1151 | return message; |
| 1144 | } | 1152 | } |
| 1145 | | 1153 | |