fn readVec(io_r: *Io.Reader, data: [][]u8) Io.Reader.Error!usize io_r: *Io.Readerdata: [][]u81322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341 fn readVec(io_r: *Io.Reader, data: [][]u8) Io.Reader.Error!usize {
const r: *Reader = @alignCast(@fieldParentPtr("interface", io_r));
const io = r.io;
var iovecs_buffer: [max_iovecs_len][]u8 = undefined;
const dest_n, const data_size = try io_r.writableVector(&iovecs_buffer, data);
const dest = iovecs_buffer[0..dest_n];
assert(dest[0].len > 0);
const n = r.stream.read(io, dest) catch |err| {
r.err = err;
return error.ReadFailed;
};
if (n == 0) {
return error.EndOfStream;
}
if (n > data_size) {
r.interface.end += n - data_size;
return data_size;
}
return n;
}