From 25bd37801ffc5b066da1c4a33008633a7b069179 Mon Sep 17 00:00:00 2001 From: Liam Pietralla Date: Sat, 12 Apr 2025 09:24:37 +1000 Subject: [PATCH] improve error handling --- packages/backend/Services/YaleAccessor.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/backend/Services/YaleAccessor.cs b/packages/backend/Services/YaleAccessor.cs index da9d637..ff7d386 100644 --- a/packages/backend/Services/YaleAccessor.cs +++ b/packages/backend/Services/YaleAccessor.cs @@ -56,23 +56,33 @@ namespace YaleAccess.Services // Flag to indicate if the driver is ready to use bool isReady = false; + // Message and flag to indicate if there was an error starting the driver + string? message = null; + // Subscribe to the driver ready event driver.DriverReady += () => { isReady = true; }; - driver.StartUpError += (message) => + driver.StartUpError += (error) => { - throw new Exception(message); + message = error; }; // Wait for the driver to be ready - while (!isReady) + while (!isReady && message == null) { + // Sleep for a short time to avoid busy waiting Thread.Sleep(100); } + // If there was an error starting the driver, throw an exception + if (message != null) + { + throw new Exception($"Failed to start the driver. Error message: {message}"); + } + // Get the lock node from the driver lockNode = driver.Controller.Nodes.Get(devicesOptions.YaleLockNodeId); } -- 2.47.2