Move binary back to zaprus

Also clean up the args for the aux functions by computing the type instead of passing it
This commit is contained in:
2025-04-05 17:37:24 -04:00
parent 3c935698aa
commit 433a97fe5a
4 changed files with 18 additions and 22 deletions

View File

@@ -16,34 +16,34 @@ pub fn build(b: *std.Build) void {
const optimize = b.standardOptimizeOption(.{}); const optimize = b.standardOptimizeOption(.{});
// We will also create a module for our other entry point, 'main.zig'. // We will also create a module for our other entry point, 'main.zig'.
const relay_exe_mod = b.createModule(.{ const exe_mod = b.createModule(.{
// `root_source_file` is the Zig "entry point" of the module. If a module // `root_source_file` is the Zig "entry point" of the module. If a module
// only contains e.g. external object files, you can make this `null`. // only contains e.g. external object files, you can make this `null`.
// In this case the main source file is merely a path, however, in more // In this case the main source file is merely a path, however, in more
// complicated build scripts, this could be a generated file. // complicated build scripts, this could be a generated file.
.root_source_file = b.path("src/saprus_relay.zig"), .root_source_file = b.path("src/main.zig"),
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
}); });
relay_exe_mod.addImport("network", b.dependency("network", .{}).module("network")); exe_mod.addImport("network", b.dependency("network", .{}).module("network"));
// This creates another `std.Build.Step.Compile`, but this one builds an executable // This creates another `std.Build.Step.Compile`, but this one builds an executable
// rather than a static library. // rather than a static library.
const relay_exe = b.addExecutable(.{ const exe = b.addExecutable(.{
.name = "saprus_relay", .name = "zaprus",
.root_module = relay_exe_mod, .root_module = exe_mod,
}); });
// This declares intent for the executable to be installed into the // This declares intent for the executable to be installed into the
// standard location when the user invokes the "install" step (the default // standard location when the user invokes the "install" step (the default
// step when running `zig build`). // step when running `zig build`).
b.installArtifact(relay_exe); b.installArtifact(exe);
// This *creates* a Run step in the build graph, to be executed when another // This *creates* a Run step in the build graph, to be executed when another
// step is evaluated that depends on it. The next line below will establish // step is evaluated that depends on it. The next line below will establish
// such a dependency. // such a dependency.
const run_cmd = b.addRunArtifact(relay_exe); const run_cmd = b.addRunArtifact(exe);
// By making the run step depend on the install step, it will be run from the // By making the run step depend on the install step, it will be run from the
// installation directory rather than directly from within the cache directory. // installation directory rather than directly from within the cache directory.
@@ -64,7 +64,7 @@ pub fn build(b: *std.Build) void {
run_step.dependOn(&run_cmd.step); run_step.dependOn(&run_cmd.step);
const exe_unit_tests = b.addTest(.{ const exe_unit_tests = b.addTest(.{
.root_module = relay_exe_mod, .root_module = exe_mod,
}); });
const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests);

View File

@@ -51,10 +51,6 @@ pub fn sendInitialConnection(payload: []const u8, initial_port: u16, allocator:
.seq_num = 1, .seq_num = 1,
.msg_id = 2, .msg_id = 2,
.reserved = 5, .reserved = 5,
// .options = .{
// .opt2 = true,
// .opt8 = true,
// },
}, },
.payload = payload, .payload = payload,
}, },

View File

@@ -64,12 +64,12 @@ pub const SaprusMessage = union(SaprusPacketType) {
} }
fn toBytesAux( fn toBytesAux(
Header: type, header: anytype,
header: Header,
payload: []const u8, payload: []const u8,
buf: *std.ArrayList(u8), buf: *std.ArrayList(u8),
allocator: Allocator, allocator: Allocator,
) !void { ) !void {
const Header = @TypeOf(header);
// Create a growable string to store the base64 bytes in. // Create a growable string to store the base64 bytes in.
// Doing this first so I can use the length of the encoded bytes for the length field. // Doing this first so I can use the length of the encoded bytes for the length field.
var payload_list = std.ArrayList(u8).init(allocator); var payload_list = std.ArrayList(u8).init(allocator);
@@ -107,8 +107,8 @@ pub const SaprusMessage = union(SaprusPacketType) {
// Write the proper header and payload for the given packet type. // Write the proper header and payload for the given packet type.
switch (self) { switch (self) {
.relay => |r| try toBytesAux(Relay.Header, r.header, r.payload, &buf, allocator), .relay => |r| try toBytesAux(r.header, r.payload, &buf, allocator),
.connection => |c| try toBytesAux(Connection.Header, c.header, c.payload, &buf, allocator), .connection => |c| try toBytesAux(c.header, c.payload, &buf, allocator),
.file_transfer => return SaprusError.NotImplementedSaprusType, .file_transfer => return SaprusError.NotImplementedSaprusType,
} }
@@ -118,13 +118,12 @@ pub const SaprusMessage = union(SaprusPacketType) {
fn fromBytesAux( fn fromBytesAux(
comptime packet: SaprusPacketType, comptime packet: SaprusPacketType,
Header: type,
r: std.io.FixedBufferStream([]const u8).Reader, r: std.io.FixedBufferStream([]const u8).Reader,
allocator: Allocator, allocator: Allocator,
) !SaprusMessage { ) !SaprusMessage {
// Read the length of the base64 encoded payload. const Header = @field(@FieldType(SaprusMessage, @tagName(packet)), "Header");
// Read the length of the header + base64 encoded payload.
const len = try r.readInt(u16, .big); const len = try r.readInt(u16, .big);
// Read the header for the current message type. // Read the header for the current message type.
var header_bytes: [@sizeOf(Header)]u8 = undefined; var header_bytes: [@sizeOf(Header)]u8 = undefined;
_ = try r.read(header_bytes[0 .. @bitSizeOf(Header) / 8]); _ = try r.read(header_bytes[0 .. @bitSizeOf(Header) / 8]);
@@ -152,11 +151,12 @@ pub const SaprusMessage = union(SaprusPacketType) {
var s = std.io.fixedBufferStream(bytes); var s = std.io.fixedBufferStream(bytes);
const r = s.reader(); const r = s.reader();
// Read packet type
const packet_type = @as(SaprusPacketType, @enumFromInt(try r.readInt(u16, .big))); const packet_type = @as(SaprusPacketType, @enumFromInt(try r.readInt(u16, .big)));
switch (packet_type) { switch (packet_type) {
.relay => return fromBytesAux(.relay, Relay.Header, r, allocator), .relay => return fromBytesAux(.relay, r, allocator),
.connection => return fromBytesAux(.connection, Connection.Header, r, allocator), .connection => return fromBytesAux(.connection, r, allocator),
.file_transfer => return SaprusError.NotImplementedSaprusType, .file_transfer => return SaprusError.NotImplementedSaprusType,
else => return SaprusError.UnknownSaprusType, else => return SaprusError.UnknownSaprusType,
} }