From f9dae4229a9654fc124424333e0c0909834b6b8b Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 12 Apr 2026 13:40:18 -0700 Subject: [PATCH] AnyWritable: add writev --- AnyWritable.zig | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/AnyWritable.zig b/AnyWritable.zig index 0ffd3d97ccc19aa732368aff013253b2af593488..ede853a09f85d497a6c2b7e122015a11f087412b 100644 --- a/AnyWritable.zig +++ b/AnyWritable.zig @@ -1,4 +1,11 @@ const std = @import("std"); +const builtin = @import("builtin"); +const sys_linux = @import("sys-linux"); + +const sys = switch (builtin.target.os.tag) { + .linux => sys_linux, + else => unreachable, +}; const nio = @import("./nio.zig"); const AnyWritable = @This(); @@ -13,6 +20,15 @@ pub usingnamespace nio.Writable(@This(), ._const); pub fn write(r: AnyWritable, buffer: []const u8) !usize { return r.vtable.write(r.state, buffer); } +pub fn writev(w: AnyWritable, iovec: []const sys.struct_iovec) WriteError!usize { + var total: usize = 0; + for (iovec) |vec| { + const len = try write(w, vec.base[0..vec.len]); + total += len; + if (len != vec.len) break; + } + return total; +} pub fn anyWritable(r: AnyWritable) AnyWritable { return r; } -- 2.54.0