| ... | ... | @@ -993,7 +993,7 @@ pub const Reader = struct { |
| 993 | 993 | }; |
| 994 | 994 | var remaining = std.math.cast(u64, offset) orelse return seek_err; |
| 995 | 995 | while (remaining > 0) { |
| 996 | | const n = discard(r, .limited(remaining)) catch |err| { |
| 996 | const n = discard(&r.interface, .limited(remaining)) catch |err| { |
| 997 | 997 | r.seek_err = err; |
| 998 | 998 | return err; |
| 999 | 999 | }; |
| ... | ... | @@ -1252,25 +1252,29 @@ pub const Writer = struct { |
| 1252 | 1252 | /// vectors through the underlying write calls as possible. |
| 1253 | 1253 | const max_buffers_len = 16; |
| 1254 | 1254 | |
| 1255 | | pub fn init(file: File, buffer: []u8) std.io.Writer { |
| 1255 | pub fn init(file: File, buffer: []u8) Writer { |
| 1256 | 1256 | return initMode(file, buffer, .positional); |
| 1257 | 1257 | } |
| 1258 | 1258 | |
| 1259 | | pub fn initMode(file: File, buffer: []u8, init_mode: Writer.Mode) std.io.Writer { |
| 1259 | pub fn initMode(file: File, buffer: []u8, init_mode: Writer.Mode) Writer { |
| 1260 | 1260 | return .{ |
| 1261 | 1261 | .file = file, |
| 1262 | | .interface = .{ |
| 1263 | | .context = undefined, |
| 1264 | | .vtable = &.{ |
| 1265 | | .drain = drain, |
| 1266 | | .sendFile = sendFile, |
| 1267 | | }, |
| 1268 | | .buffer = buffer, |
| 1269 | | }, |
| 1262 | .interface = initInterface(buffer), |
| 1270 | 1263 | .mode = init_mode, |
| 1271 | 1264 | }; |
| 1272 | 1265 | } |
| 1273 | 1266 | |
| 1267 | pub fn initInterface(buffer: []u8) std.io.Writer { |
| 1268 | return .{ |
| 1269 | .context = undefined, |
| 1270 | .vtable = &.{ |
| 1271 | .drain = drain, |
| 1272 | .sendFile = sendFile, |
| 1273 | }, |
| 1274 | .buffer = buffer, |
| 1275 | }; |
| 1276 | } |
| 1277 | |
| 1274 | 1278 | pub fn moveToReader(w: *Writer) Reader { |
| 1275 | 1279 | defer w.* = undefined; |
| 1276 | 1280 | return .{ |
| ... | ... | @@ -1335,7 +1339,11 @@ pub const Writer = struct { |
| 1335 | 1339 | }; |
| 1336 | 1340 | } |
| 1337 | 1341 | |
| 1338 | | pub fn sendFile(io_writer: *Writer, file_reader: *Reader, limit: std.io.Limit) std.io.Writer.FileError!usize { |
| 1342 | pub fn sendFile( |
| 1343 | io_writer: *std.io.Writer, |
| 1344 | file_reader: *Reader, |
| 1345 | limit: std.io.Limit, |
| 1346 | ) std.io.Writer.FileError!usize { |
| 1339 | 1347 | const w: *Writer = @fieldParentPtr("interface", io_writer); |
| 1340 | 1348 | const out_fd = w.file.handle; |
| 1341 | 1349 | const in_fd = file_reader.file.handle; |