From a1b3c07f0e59f3f56ae76fe4a43df3170ac78606 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Wed, 23 Apr 2025 07:31:38 -0400 Subject: Convert from Zig struct to C struct --- src/c_api.zig | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/c_api.zig b/src/c_api.zig index 481dc78..a0343ae 100644 --- a/src/c_api.zig +++ b/src/c_api.zig @@ -4,11 +4,38 @@ const c = @cImport({ fn zigToCMessage(msg: ?*zaprus.Message) ?*c.SaprusMessage { if (msg) |m| { - return switch (m.*) { - .relay => |_| @constCast(&c.SaprusMessage{}), - .connection => |_| @constCast(&c.SaprusMessage{}), - else => |_| null, + var res = c.SaprusMessage{ + .packet_type = @intFromEnum(m.*), }; + switch (m.*) { + .relay => |r| { + res.unnamed_0 = .{ .relay = .{ + .unnamed_0 = .{ + .dest = r.header.dest, + }, + .payload_len = r.payload.len, + .payload = (allocator.alloc(u8, r.payload.len) catch return null).ptr, + } }; + }, + .connection => |con| { + res.unnamed_0 = .{ + .connection = .{ + .unnamed_0 = .{ + .src_port = con.header.src_port, + .dest_port = con.header.dest_port, + .seq_num = con.header.seq_num, + .msg_id = con.header.msg_id, + ._reserved = con.header.reserved, + .options = @bitCast(con.header.options), + }, + .payload_len = con.payload.len, + .payload = (allocator.alloc(u8, con.payload.len) catch return null).ptr, + }, + }; + }, + else => return null, + } + return &res; } else return null; } -- cgit