authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-03-04 03:57:08 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-03-04 03:57:08 -08:00
loge75714203d4aadd2e5e12dffc6ea18b62c372204
tree6fe0ade533cfe325f9de477609a01d556c160c15
parent8dfc5bab4868065b93fe822d891b93434344d32f
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

implement writev for BufferedWriter


1 files changed, 16 insertions(+), 0 deletions(-)

buffered_writer.zig+16
......@@ -1,5 +1,12 @@
11const std = @import("std");
22const nio = @import("./nio.zig");
3const builtin = @import("builtin");
4const sys_linux = @import("sys-linux");
5
6const sys = switch (builtin.target.os.tag) {
7 .linux => sys_linux,
8 else => unreachable,
9};
310
411pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) type {
512 return struct {
......@@ -29,6 +36,15 @@ pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) ty
2936 self.end = new_end;
3037 return bytes.len;
3138 }
39 pub fn writev(self: *Self, iovec: []const sys.struct_iovec) WriteError!usize {
40 var total: usize = 0;
41 for (iovec) |vec| {
42 const len = try write(self, vec.base[0..vec.len]);
43 total += len;
44 if (len != vec.len) break;
45 }
46 return total;
47 }
3248
3349 pub fn anyWritable(self: *Self) nio.AnyWritable {
3450 const S = struct {