mirror of
https://git.robbyzambito.me/zaprus
synced 2025-12-21 16:54:49 +00:00
Move sendRelay logic to Saprus struct
This commit is contained in:
43
src/saprus.zig
Normal file
43
src/saprus.zig
Normal file
@@ -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");
|
||||||
@@ -39,8 +39,8 @@ pub const SaprusMessage = union(SaprusPacketType) {
|
|||||||
};
|
};
|
||||||
pub const Connection = struct {
|
pub const Connection = struct {
|
||||||
pub const Header = packed struct {
|
pub const Header = packed struct {
|
||||||
src_port: u16,
|
src_port: u16, // random number > 1024
|
||||||
dest_port: u16,
|
dest_port: u16, // random number > 1024
|
||||||
seq_num: u32 = 0,
|
seq_num: u32 = 0,
|
||||||
msg_id: u32 = 0,
|
msg_id: u32 = 0,
|
||||||
reserved: u8 = 0,
|
reserved: u8 = 0,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ pub fn main() !void {
|
|||||||
_ = dba.deinit();
|
_ = 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);
|
const args = try std.process.argsAlloc(gpa);
|
||||||
defer std.process.argsFree(gpa, args);
|
defer std.process.argsFree(gpa, args);
|
||||||
@@ -27,38 +27,10 @@ pub fn main() !void {
|
|||||||
try message.append(' ');
|
try message.append(' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
const msg = SaprusMessage{
|
try Saprus.init();
|
||||||
.relay = .{
|
defer Saprus.deinit();
|
||||||
.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);
|
try Saprus.sendRelay(if (message.items.len > 0) message.items else "Hello darkness my old friend", gpa);
|
||||||
defer gpa.free(msg_bytes);
|
|
||||||
|
|
||||||
try network.init();
|
|
||||||
defer network.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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
@@ -66,6 +38,4 @@ const std = @import("std");
|
|||||||
const DebugAllocator = std.heap.DebugAllocator(.{});
|
const DebugAllocator = std.heap.DebugAllocator(.{});
|
||||||
const ArrayList = std.ArrayList;
|
const ArrayList = std.ArrayList;
|
||||||
|
|
||||||
const network = @import("network");
|
const Saprus = @import("./saprus.zig");
|
||||||
|
|
||||||
const SaprusMessage = @import("./saprus_message.zig").SaprusMessage;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user