diff options
Diffstat (limited to 'src/saprus.zig')
-rw-r--r-- | src/saprus.zig | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/src/saprus.zig b/src/saprus.zig index b51fae7..d591928 100644 --- a/src/saprus.zig +++ b/src/saprus.zig @@ -6,14 +6,7 @@ pub fn deinit() void { network.deinit(); } -pub fn sendRelay(payload: []const u8, allocator: std.mem.Allocator) !void { - const msg = SaprusMessage{ - .relay = .{ - .header = .{ .dest = .{ 255, 255, 255, 255 } }, - .payload = payload, - }, - }; - +inline fn broadcastSaprusMessage(msg: SaprusMessage, allocator: Allocator) !void { const msg_bytes = try msg.toBytes(allocator); defer allocator.free(msg_bytes); @@ -38,6 +31,40 @@ pub fn sendRelay(payload: []const u8, allocator: std.mem.Allocator) !void { _ = try sock.sendTo(dest_addr, msg_bytes); } +pub fn sendRelay(payload: []const u8, allocator: Allocator) !void { + const msg = SaprusMessage{ + .relay = .{ + .header = .{ .dest = .{ 255, 255, 255, 255 } }, + .payload = payload, + }, + }; + + try broadcastSaprusMessage(msg, allocator); +} + +pub fn sendInitialConnection(payload: []const u8, initial_port: u16, allocator: Allocator) !void { + const msg = SaprusMessage{ + .connection = .{ + .header = .{ + .src_port = initial_port, + .dest_port = 6868, + .seq_num = 1, + .msg_id = 2, + .reserved = 5, + .options = .{ + .opt2 = true, + .opt8 = true, + }, + }, + .payload = payload, + }, + }; + + try broadcastSaprusMessage(msg, allocator); +} + const SaprusMessage = @import("./saprus_message.zig").SaprusMessage; const std = @import("std"); const network = @import("network"); + +const Allocator = std.mem.Allocator; |