summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobby Zambito <contact@robbyzambito.me>2025-04-04 22:09:06 -0400
committerRobby Zambito <contact@robbyzambito.me>2025-04-06 13:08:09 -0400
commit7b07520adb0191ec70869357aab27b29ee4b94f7 (patch)
tree729b52232090cc98928a3c269b36344a55671989 /src
parent448e900004053012e63078682e34b48799050794 (diff)
Move sendRelay logic to Saprus struct
Diffstat (limited to 'src')
-rw-r--r--src/saprus.zig43
-rw-r--r--src/saprus_message.zig4
-rw-r--r--src/saprus_relay.zig40
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");