diff options
| author | Mitchell Hashimoto <m@mitchellh.com> | 2024-08-27 13:31:59 -0700 |
|---|---|---|
| committer | Mitchell Hashimoto <m@mitchellh.com> | 2024-08-28 21:43:17 -0700 |
| commit | b11f0d5cc94f6dad1b7d794ff54cd7320425d176 (patch) | |
| tree | dec0bb08b4658bb86ea338a6e12b7d85f1174803 /pkg | |
| parent | 10700680906af089287aa9269ec7b7c2b8def578 (diff) | |
pkg/sentry: custom transports
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/sentry/envelope.zig | 10 | ||||
| -rw-r--r-- | pkg/sentry/main.zig | 4 | ||||
| -rw-r--r-- | pkg/sentry/transport.zig | 26 |
3 files changed, 40 insertions, 0 deletions
diff --git a/pkg/sentry/envelope.zig b/pkg/sentry/envelope.zig new file mode 100644 index 000000000..38253f290 --- /dev/null +++ b/pkg/sentry/envelope.zig @@ -0,0 +1,10 @@ +const std = @import("std"); +const assert = std.debug.assert; +const c = @import("c.zig").c; + +/// sentry_envelope_t +pub const Envelope = opaque { + pub fn deinit(self: *Envelope) void { + c.sentry_envelope_free(@ptrCast(self)); + } +}; diff --git a/pkg/sentry/main.zig b/pkg/sentry/main.zig index b8133800f..92e52cee3 100644 --- a/pkg/sentry/main.zig +++ b/pkg/sentry/main.zig @@ -1,6 +1,10 @@ pub const c = @import("c.zig").c; +const transport = @import("transport.zig"); + +pub const Envelope = @import("envelope.zig").Envelope; pub const Level = @import("level.zig").Level; +pub const Transport = transport.Transport; pub const Value = @import("value.zig").Value; pub const UUID = @import("uuid.zig").UUID; diff --git a/pkg/sentry/transport.zig b/pkg/sentry/transport.zig new file mode 100644 index 000000000..835b87cd3 --- /dev/null +++ b/pkg/sentry/transport.zig @@ -0,0 +1,26 @@ +const std = @import("std"); +const assert = std.debug.assert; +const c = @import("c.zig").c; +const Envelope = @import("envelope.zig").Envelope; + +/// sentry_transport_t +pub const Transport = opaque { + pub const SendFunc = *const fn (envelope: *Envelope, state: ?*anyopaque) callconv(.C) void; + pub const FreeFunc = *const fn (state: ?*anyopaque) callconv(.C) void; + + pub fn init(f: SendFunc) *Transport { + return @ptrCast(c.sentry_transport_new(@ptrCast(f)).?); + } + + pub fn deinit(self: *Transport) void { + c.sentry_transport_free(@ptrCast(self)); + } + + pub fn setState(self: *Transport, state: ?*anyopaque) void { + c.sentry_transport_set_state(@ptrCast(self), state); + } + + pub fn setStateFreeFunc(self: *Transport, f: FreeFunc) void { + c.sentry_transport_set_free_func(@ptrCast(self), f); + } +}; |
