summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorMitchell Hashimoto <m@mitchellh.com>2024-08-27 13:31:59 -0700
committerMitchell Hashimoto <m@mitchellh.com>2024-08-28 21:43:17 -0700
commitb11f0d5cc94f6dad1b7d794ff54cd7320425d176 (patch)
treedec0bb08b4658bb86ea338a6e12b7d85f1174803 /pkg
parent10700680906af089287aa9269ec7b7c2b8def578 (diff)
pkg/sentry: custom transports
Diffstat (limited to 'pkg')
-rw-r--r--pkg/sentry/envelope.zig10
-rw-r--r--pkg/sentry/main.zig4
-rw-r--r--pkg/sentry/transport.zig26
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);
+ }
+};