diff options
| author | Robby Zambito <contact@robbyzambito.me> | 2026-01-24 11:27:07 -0500 |
|---|---|---|
| committer | Robby Zambito <contact@robbyzambito.me> | 2026-01-24 11:28:18 -0500 |
| commit | 3577d538b893f3dda771f268bf9ea7f8acac3521 (patch) | |
| tree | 8424981a3b1c461d9e158804dbb73d4840850c6a /src/main.zig | |
| parent | fc9c5bcd5db71cc93b78b34165485ceb92ffacc8 (diff) | |
Chunk relay input
This makes it possible to chunk connection command output to a relay
command to direct it somewhere like discord
Diffstat (limited to 'src/main.zig')
| -rw-r--r-- | src/main.zig | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main.zig b/src/main.zig index d6d825a..8fa10e0 100644 --- a/src/main.zig +++ b/src/main.zig @@ -38,7 +38,6 @@ pub fn main(init: std.process.Init) !void { } = .{}; { - var payload_buf: [4096]u8 = undefined; var i: usize = 1; while (i < args.len) : (i += 1) { if (to_option.get(args[i])) |opt| { @@ -50,9 +49,7 @@ pub fn main(init: std.process.Init) !void { .relay => { i += 1; if (i < args.len) { - var w: Writer = .fixed(&payload_buf); - try w.printBase64(args[i]); - flags.relay = w.buffered(); + flags.relay = args[i]; } else { std.debug.print("-r/--relay requires a string\n", .{}); return error.InvalidArguments; @@ -70,7 +67,10 @@ pub fn main(init: std.process.Init) !void { .connect => { i += 1; if (i < args.len) { - var w: Writer = .fixed(&payload_buf); + var w: Writer = blk: { + var buf: [2048]u8 = undefined; + break :blk .fixed(&buf); + }; try w.printBase64(args[i]); flags.connect = w.buffered(); } else { @@ -94,7 +94,17 @@ pub fn main(init: std.process.Init) !void { defer client.deinit(); if (flags.relay != null) { - try client.sendRelay(init.io, flags.relay.?, parseDest(flags.dest)); + var chunk_writer: Writer = blk: { + var buf: [2048]u8 = undefined; + break :blk .fixed(&buf); + }; + var output_iter = std.mem.window(u8, flags.relay.?, SaprusClient.max_payload_len, SaprusClient.max_payload_len); + while (output_iter.next()) |chunk| { + chunk_writer.end = 0; + try chunk_writer.print("{b64}", .{chunk}); + try client.sendRelay(init.io, chunk_writer.buffered(), parseDest(flags.dest)); + try init.io.sleep(.fromMilliseconds(40), .real); + } return; } |
