diff --git a/pkg/sentry/envelope.zig b/pkg/sentry/envelope.zig index d40a8d9fb..17aae57f5 100644 --- a/pkg/sentry/envelope.zig +++ b/pkg/sentry/envelope.zig @@ -1,6 +1,7 @@ const std = @import("std"); const assert = std.debug.assert; const c = @import("c.zig").c; +const Value = @import("value.zig").Value; /// sentry_envelope_t pub const Envelope = opaque { @@ -15,4 +16,10 @@ pub const Envelope = opaque { path.len, ) != 0) return error.WriteFailed; } + + pub fn event(self: *Envelope) ?Value { + const val: Value = .{ .value = c.sentry_envelope_get_event(@ptrCast(self)) }; + if (val.isNull()) return null; + return val; + } }; diff --git a/pkg/sentry/value.zig b/pkg/sentry/value.zig index 6df70d6d7..47fbec9fa 100644 --- a/pkg/sentry/value.zig +++ b/pkg/sentry/value.zig @@ -31,4 +31,8 @@ pub const Value = struct { pub fn incref(self: Value) Value { c.sentry_value_incref(self.value); } + + pub fn isNull(self: Value) bool { + return c.sentry_value_is_null(self.value) != 0; + } }; diff --git a/src/sentry.zig b/src/sentry.zig index c54049e43..589fea3d5 100644 --- a/src/sentry.zig +++ b/src/sentry.zig @@ -75,6 +75,9 @@ pub const Transport = struct { /// Implementation of send but we can use Zig errors. fn sendInternal(envelope: *sentry.Envelope) !void { + // If our envelope doesn't have an event then we don't do anything. + if (envelope.event() == null) return; + var arena = std.heap.ArenaAllocator.init(state.alloc); defer arena.deinit(); const alloc = arena.allocator();