diff options
| -rw-r--r-- | src/saprus.zig | 43 | ||||
| -rw-r--r-- | src/saprus_message.zig | 4 | ||||
| -rw-r--r-- | src/saprus_relay.zig | 40 | 
3 files changed, 50 insertions, 37 deletions
| diff --git a/src/saprus.zig b/src/saprus.zig new file mode 100644 index 0000000..b51fae7 --- /dev/null +++ b/src/saprus.zig @@ -0,0 +1,43 @@ +pub fn init() !void { +    try network.init(); +} + +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, +        }, +    }; + +    const msg_bytes = try msg.toBytes(allocator); +    defer allocator.free(msg_bytes); + +    var sock = try network.Socket.create(.ipv4, .udp); +    defer sock.close(); + +    try sock.setBroadcast(true); + +    // Bind to 0.0.0.0:0 +    const bind_addr = network.EndPoint{ +        .address = network.Address{ .ipv4 = network.Address.IPv4.any }, +        .port = 0, +    }; + +    const dest_addr = network.EndPoint{ +        .address = network.Address{ .ipv4 = network.Address.IPv4.broadcast }, +        .port = 8888, +    }; + +    try sock.bind(bind_addr); + +    _ = try sock.sendTo(dest_addr, msg_bytes); +} + +const SaprusMessage = @import("./saprus_message.zig").SaprusMessage; +const std = @import("std"); +const network = @import("network"); diff --git a/src/saprus_message.zig b/src/saprus_message.zig index 443bbfb..09536f0 100644 --- a/src/saprus_message.zig +++ b/src/saprus_message.zig @@ -39,8 +39,8 @@ pub const SaprusMessage = union(SaprusPacketType) {      };      pub const Connection = struct {          pub const Header = packed struct { -            src_port: u16, -            dest_port: u16, +            src_port: u16, // random number > 1024 +            dest_port: u16, // random number > 1024              seq_num: u32 = 0,              msg_id: u32 = 0,              reserved: u8 = 0, diff --git a/src/saprus_relay.zig b/src/saprus_relay.zig index 0df66e9..17ea8ea 100644 --- a/src/saprus_relay.zig +++ b/src/saprus_relay.zig @@ -13,7 +13,7 @@ pub fn main() !void {          _ = dba.deinit();      }; -    var gpa = if (is_debug) dba.allocator() else std.heap.smp_allocator; +    const gpa = if (is_debug) dba.allocator() else std.heap.smp_allocator;      const args = try std.process.argsAlloc(gpa);      defer std.process.argsFree(gpa, args); @@ -27,38 +27,10 @@ pub fn main() !void {              try message.append(' ');      } -    const msg = SaprusMessage{ -        .relay = .{ -            .header = .{ .dest = .{ 255, 255, 255, 255 } }, -            .payload = if (message.items.len > 0) message.items else "Hello darkness my old friend", -        }, -    }; - -    const msg_bytes = try msg.toBytes(gpa); -    defer gpa.free(msg_bytes); - -    try network.init(); -    defer network.deinit(); +    try Saprus.init(); +    defer Saprus.deinit(); -    var sock = try network.Socket.create(.ipv4, .udp); -    defer sock.close(); - -    try sock.setBroadcast(true); - -    // Bind to 0.0.0.0:0 -    const bind_addr = network.EndPoint{ -        .address = network.Address{ .ipv4 = network.Address.IPv4.any }, -        .port = 0, -    }; - -    const dest_addr = network.EndPoint{ -        .address = network.Address{ .ipv4 = network.Address.IPv4.broadcast }, -        .port = 8888, -    }; - -    try sock.bind(bind_addr); - -    _ = try sock.sendTo(dest_addr, msg_bytes); +    try Saprus.sendRelay(if (message.items.len > 0) message.items else "Hello darkness my old friend", gpa);  }  const builtin = @import("builtin"); @@ -66,6 +38,4 @@ const std = @import("std");  const DebugAllocator = std.heap.DebugAllocator(.{});  const ArrayList = std.ArrayList; -const network = @import("network"); - -const SaprusMessage = @import("./saprus_message.zig").SaprusMessage; +const Saprus = @import("./saprus.zig"); | 
