Changes
4 changed files (+26/-3)
-
-
@@ -126,8 +126,6 @@ std.log.err("Failed to save state to disk: {s}", .{@errorName(err)});return err; }; std.log.debug("Extension enabled (token={s})", .{new_token}); return .{ .allocator = allocator, .state = state,
-
-
-
@@ -82,6 +82,7 @@ conn.listen(PingService.handleRequest) catch {return null; }; std.log.debug("Querying registry status...", .{}); const info = RegistryService.info(allocator, conn) catch |err| { std.log.err("Failed to get extension registry status: {s}", .{@errorName(err)}); return null;
-
@@ -92,6 +93,7 @@ const extension = AppExtension{.token = if (token) |tok| std.mem.span(tok) else null, }; std.log.debug("Registering extension {s} token...", .{if (token) |_| "with" else "without"}); const register = RegistryService.register(AppExtension, allocator, conn, extension) catch |err| { std.log.err("Failed to register extension: {s}", .{@errorName(err)}); return null;
-
@@ -99,6 +101,8 @@ };defer register.deinit(); self.conn = conn; std.log.debug("Extension registered, application is ready", .{}); return allocator.dupeZ(u8, register.value.token) catch return null; }
-
-
-
@@ -76,6 +76,7 @@ .host = addr_string[0..port_start],}) catch return InitError.WebSocketClientCreationError; errdefer client.deinit(); std.log.debug("Performing WebSocket handshake...", .{}); client.handshake("/api", .{ .timeout_ms = 1_000, }) catch return InitError.WebSocketHandshakeError;
-
@@ -103,14 +104,17 @@ };} pub fn listen(self: *Connection, on_request: RequestHandler) !void { std.log.debug("Spawning WebSocket request handler thread...", .{}); self.thread = try std.Thread.spawn(.{}, readLoop, .{ self, on_request }); } pub fn deinit(self: *Connection) void { std.log.debug("Closing WebSocket connection...", .{}); self.ws.close(.{}) catch |err| { std.log.warn("Failed to close WebSocket connection, proceeding: {s}", .{@errorName(err)}); }; if (self.thread) |thread| { std.log.debug("Waiting WebSocket thread to terminate...", .{}); // Wait for read thread to terminate. thread.join(); self.thread = null;
-
@@ -170,6 +174,8 @@while (true) { const msg = conn.ws.read() catch return orelse continue; defer conn.ws.done(msg); std.log.debug("Received WebSocket message: type={s}", .{@tagName(msg.type)}); switch (msg.type) { // NOTE: roon-node-api does not check whether message is binaryType.
-
-
-
@@ -168,6 +168,7 @@const fd = try allocator.create(std.posix.socket_t); errdefer allocator.destroy(fd); std.log.debug("Opening UDP socket...", .{}); fd.* = std.posix.socket(std.posix.AF.INET, std.posix.SOCK.DGRAM, 0) catch |err| { return switch (err) { std.posix.SocketError.PermissionDenied => ScanError.SocketPermissionDenied,
-
@@ -202,6 +203,12 @@ const usec = @min(std.math.maxInt(i32), 1_000 * (std.math.rem(u32, timeout_ms, 1_000) catch {return ScanError.InvalidReceiveWindow; })); std.log.debug("Setting UDP read timeout to {d}ms ({d}sec, {d}usec)", .{ timeout_ms, sec, usec, }); const timeout = std.posix.timeval{ .sec = sec, .usec = usec }; std.posix.setsockopt( sockfd.*,
-
@@ -216,6 +223,8 @@ };} inline fn sendDiscoveryQuery(sockfd: *std.posix.socket_t) ScanError!void { std.log.debug("Sending server discovery message to {}", .{udp_dst}); _ = std.posix.sendto( sockfd.*, sood.discovery.Query.prebuilt,
-
@@ -266,6 +275,8 @@ for (0..opts.count) |_| {try sendDiscoveryQuery(sockfd); while (true) { std.log.debug("Got message on UDP socket", .{}); // Discovery response from servers usually fits under 300 bytes. // Extra bytes for safety. var received: [512]u8 = undefined;
-
@@ -284,7 +295,11 @@ std.posix.RecvFromError.MessageTooBig => continue,else => return ScanError.UDPRecvError, }; const response = sood.discovery.Response.parse(received[0..size]) catch { const response = sood.discovery.Response.parse(received[0..size]) catch |err| { std.log.warn( "Unable to parse received UDP message as SOOD message: {s}", .{@errorName(err)}, ); // Non-SOOD message. Unlikely but technically possible. continue; };
-