mirror of
https://git.robbyzambito.me/zaprus
synced 2025-12-20 16:24:50 +00:00
Write the header as a packed int
this seems like the best way to do it.
This commit is contained in:
@@ -79,16 +79,21 @@ pub const SaprusMessage = union(SaprusPacketType) {
|
|||||||
// Write the payload bytes as base64 to the growable string.
|
// Write the payload bytes as base64 to the growable string.
|
||||||
try base64Enc.encodeWriter(buf_w, payload);
|
try base64Enc.encodeWriter(buf_w, payload);
|
||||||
|
|
||||||
// Write the packet body to the output writer
|
// At this point, payload_list contains the base64 encoded payload.
|
||||||
|
|
||||||
|
// Write the packet body to the output buf.
|
||||||
try buf.*.appendSlice(asBytes(&nativeToBig(u16, @intCast(payload_list.items.len))));
|
try buf.*.appendSlice(asBytes(&nativeToBig(u16, @intCast(payload_list.items.len))));
|
||||||
|
|
||||||
var h = header;
|
// Write the header bytes to the output buf.
|
||||||
inline for (@typeInfo(Header).@"struct".fields) |f| {
|
const HeaderInt = @typeInfo(Header).@"struct".backing_integer.?;
|
||||||
@field(h, f.name) = nativeToBig(@TypeOf(@field(h, f.name)), @field(h, f.name));
|
std.mem.writePackedInt(
|
||||||
}
|
HeaderInt,
|
||||||
|
try buf.*.addManyAsSlice(@bitSizeOf(Header) / 8),
|
||||||
|
0,
|
||||||
|
@bitCast(header),
|
||||||
|
.little,
|
||||||
|
);
|
||||||
|
|
||||||
const h_bytes = asBytes(&h);
|
|
||||||
try buf.*.appendSlice(h_bytes[0 .. h_bytes.len - 2]);
|
|
||||||
try buf.*.appendSlice(payload_list.items);
|
try buf.*.appendSlice(payload_list.items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user