Changes
1 changed files (+19/-0)
-
-
@@ -379,6 +379,7 @@ saved_token: ?[]const u8 = null,browse_listeners: std.AutoHashMap(i64, BrowseListener), load_listeners: std.AutoHashMap(i64, LoadListener), image_listeners: std.AutoHashMap(i64, ImageListener), control_events: std.AutoHashMap(i64, std.Thread.ResetEvent), fn init(server: *discovery.Server, token: ?[]const u8) !Internal { var addr = std.ArrayList(u8).init(allocator);
-
@@ -409,6 +410,7 @@ .saved_token = saved_token,.browse_listeners = std.AutoHashMap(i64, BrowseListener).init(allocator), .load_listeners = std.AutoHashMap(i64, LoadListener).init(allocator), .image_listeners = std.AutoHashMap(i64, ImageListener).init(allocator), .control_events = std.AutoHashMap(i64, std.Thread.ResetEvent).init(allocator), }; }
-
@@ -416,6 +418,7 @@ fn deinit(self: *Internal) void {self.browse_listeners.deinit(); self.load_listeners.deinit(); self.image_listeners.deinit(); self.control_events.deinit(); if (self.ws) |*ws| { ws.deinit();
-
@@ -670,6 +673,13 @@ continue;}; entry.value_ptr.write(obj); continue; } if (self.internal.control_events.getEntry(header.request_id)) |entry| { std.log.debug("Received /control response (ID={d})", .{header.request_id}); entry.value_ptr.set(); continue; }
-
@@ -918,10 +928,19 @@ return;}; defer allocator.free(req); var entry = self.internal.control_events.getOrPut(req_id) catch |err| { std.log.err("Unable to set listener for control response: {s}", .{@errorName(err)}); return; }; entry.value_ptr.* = .{}; defer _ = self.internal.control_events.remove(req_id); ws.writeBin(req) catch |err| { std.log.err("Unable to write control request: {s}", .{@errorName(err)}); return; }; entry.value_ptr.wait(); } pub fn requestBrowse(
-