Changes
5 changed files (+28/-23)
-
-
@@ -131,26 +131,30 @@ err_websocket = 10,err_not_found = 11, }; pub fn init(allocator: std.mem.Allocator) std.mem.Allocator.Error!*CApi { pub fn init(allocator: std.mem.Allocator) std.mem.Allocator.Error!CApi { const internal = try allocator.create(App); errdefer allocator.destroy(internal); internal.* = App.init(allocator); errdefer internal.deinit(); const server_selector = try ServerSelector.CApi.init(allocator); const server_selector = try allocator.create(ServerSelector.CApi); errdefer allocator.destroy(server_selector); server_selector.* = try ServerSelector.CApi.init(allocator); errdefer server_selector.deinit(allocator); const capi = try allocator.create(CApi); capi.* = .{ return .{ .internal = internal, .server_selector = server_selector, }; return capi; } pub fn new() callconv(.C) ?*CApi { return CApi.init(std.heap.c_allocator) catch return null; const capi = std.heap.c_allocator.create(CApi) catch return null; capi.* = CApi.init(std.heap.c_allocator) catch { std.heap.c_allocator.destroy(capi); return null; }; return capi; } pub fn deinit(self: *CApi, allocator: std.mem.Allocator) void {
-
@@ -161,16 +165,17 @@ server.deinit();self.internal.allocator.destroy(server); } self.server_selector.deinit(allocator); allocator.destroy(self.server_selector); self.internal.deinit(); allocator.destroy(self.internal); allocator.destroy(self); } pub fn destroy(self_ptr: ?*CApi) callconv(.C) void { const self = self_ptr orelse return; std.log.debug("Destroying application...", .{}); self.deinit(std.heap.c_allocator); std.heap.c_allocator.destroy(self); } pub fn connect(
-
-
-
@@ -123,6 +123,7 @@ pub fn deinit(self: *CApi) void {const zones = self.zones[0..self.zones_len]; for (zones) |zone| { zone.deinit(self.internal.allocator); self.internal.allocator.destroy(zone); } self.internal.allocator.free(zones);
-
@@ -175,12 +176,17 @@ const zones = try self.internal.allocator.alloc(*Zone.CApi, res.value.zones.len);errdefer self.internal.allocator.free(zones); for (res.value.zones, 0..) |zone, i| { zones[i] = try Zone.CApi.init(self.internal.allocator, zone); const dst = try self.internal.allocator.create(Zone.CApi); errdefer self.internal.allocator.destroy(dst); dst.* = try Zone.CApi.init(self.internal.allocator, zone); zones[i] = dst; } const prev = self.zones[0..self.zones_len]; for (prev) |z| { z.deinit(self.internal.allocator); self.internal.allocator.destroy(z); } self.internal.allocator.free(prev);
-
-
-
@@ -55,7 +55,7 @@ paused = 1,playing = 2, }; pub fn init(allocator: std.mem.Allocator, zone: Transport.Zone) std.mem.Allocator.Error!*CApi { pub fn init(allocator: std.mem.Allocator, zone: Transport.Zone) std.mem.Allocator.Error!CApi { const internal = try allocator.create(Self); errdefer allocator.destroy(internal); internal.* = Self.init(allocator);
-
@@ -67,9 +67,7 @@const name = try allocator.dupeZ(u8, zone.display_name); errdefer allocator.free(name); const capi = try allocator.create(CApi); errdefer allocator.destroy(capi); capi.* = .{ return .{ .internal = internal, .id = id.ptr, .id_len = id.len,
-
@@ -81,8 +79,6 @@ .paused => .paused,.playing => .playing, }, }; return capi; } pub fn deinit(self: *CApi, allocator: std.mem.Allocator) void {
-
@@ -90,7 +86,6 @@ allocator.free(self.id[0..self.id_len]);allocator.free(self.name[0..self.name_len]); self.internal.deinit(); allocator.destroy(self.internal); allocator.destroy(self); } pub fn onChange(capi_ptr: ?*CApi, cb: OnChange.Fn, userdata: callback.UserData) callconv(.C) void {
-
-
-
@@ -63,21 +63,17 @@ err_socket = 8,err_thread_spawn = 9, }; pub fn init(allocator: std.mem.Allocator) std.mem.Allocator.Error!*CApi { pub fn init(allocator: std.mem.Allocator) std.mem.Allocator.Error!CApi { const internal = try allocator.create(Self); errdefer allocator.destroy(internal); internal.* = Self.init(allocator); errdefer internal.deinit(); const capi = try allocator.create(CApi); errdefer allocator.destroy(capi); capi.* = .{ return .{ .internal = internal, .entries = undefined, .entries_len = 0, }; return capi; } pub fn deinit(self: *CApi, allocator: std.mem.Allocator) void {
-
@@ -85,7 +81,6 @@ self.deinitEntries();self.internal.deinit(); allocator.destroy(self.internal); allocator.destroy(self); } inline fn deinitEntries(self: *CApi) void {
-
-
-
@@ -50,6 +50,10 @@ }pub const FromSoodResponseError = std.mem.Allocator.Error; /// This copies slice fields of `response` so `Entry.CApi` can outlive the `response`. /// SOOD discovery response is merely a view for received UDP packets: receiving an /// another UDP packet or closing/exiting UDP code invalidates underlying buffer, thus /// makes a slice field a dangling pointer. pub fn fromSoodResponse( allocator: std.mem.Allocator, addr: std.net.Address,
-