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 @@...@@ -1,5 +1,12 @@
1const std = @import("std");1const std = @import("std");
2const nio = @import("./nio.zig");2const 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
4pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) type {11pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) type {
5 return struct {12 return struct {
...@@ -29,6 +36,15 @@ pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) ty...@@ -29,6 +36,15 @@ pub fn BufferedWriter(comptime buffer_size: usize, comptime WriterType: type) ty
29 self.end = new_end;36 self.end = new_end;
30 return bytes.len;37 return bytes.len;
31 }38 }
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
33 pub fn anyWritable(self: *Self) nio.AnyWritable {49 pub fn anyWritable(self: *Self) nio.AnyWritable {
34 const S = struct {50 const S = struct {