diff options
Diffstat (limited to 'src/RawSocketWriter.zig')
| -rw-r--r-- | src/RawSocketWriter.zig | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/src/RawSocketWriter.zig b/src/RawSocketWriter.zig deleted file mode 100644 index cffe11a..0000000 --- a/src/RawSocketWriter.zig +++ /dev/null @@ -1,32 +0,0 @@ -const std = @import("std"); -const gcat = @import("gatorcat"); -const RawSocketWriter = @This(); -const Writer = std.Io.Writer; -const assert = std.debug.assert; - -interface: Writer, -socket: gcat.nic.RawSocket, - -fn drain(io_w: *std.Io.Writer, data: []const []const u8, splat: usize) Writer.Error!usize { - const w: *RawSocketWriter = @alignCast(@fieldParentPtr("interface", io_w)); - const rem_buf = io_w.unusedCapacitySlice(); - var rem_w = Writer.fixed(rem_buf); - const res = rem_w.writeSplat(data, splat) catch rem_buf.len; - io_w.advance(res); - const buffered = io_w.buffered(); - w.socket.linkLayer().send(buffered) catch return error.WriteFailed; - _ = io_w.consumeAll(); - - return res; -} - -pub fn init(interface_name: [:0]const u8, buffer: []u8) !RawSocketWriter { - std.debug.assert(buffer.len > 0); - return .{ - .interface = .{ - .vtable = &.{ .drain = drain }, - .buffer = buffer, - }, - .socket = try .init(interface_name), - }; -} |
