diff --git a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs index 84a9c553..d55e38a2 100644 --- a/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs +++ b/Essentials/PepperDashEssentials/Room/Cotija/CotijaSystemController.cs @@ -31,6 +31,8 @@ namespace PepperDash.Essentials /// CEvent PostLockEvent = new CEvent(true, true); + CEvent RegisterLockEvent = new CEvent(true, true); + public CotijaConfig Config { get; private set; } HttpClient Client; @@ -195,6 +197,14 @@ namespace PepperDash.Essentials /// URL of the server, including the port number, if not 80. Format: "serverUrlOrIp:port" void RegisterSystemToServer() { + var ready = RegisterLockEvent.Wait(2000); + if (!ready) + { + Debug.Console(1, this, "RegisterSystemToServer failed to enter after 2 seconds. Ignoring"); + return; + } + RegisterLockEvent.Reset(); + try { var confObject = ConfigReader.ConfigObject; @@ -220,13 +230,14 @@ namespace PepperDash.Essentials request.Header.SetHeaderValue("Content-Type", "application/json"); request.ContentString = postBody; - var err = regClient.DispatchAsync(request, PostConnectionCallback); + var err = regClient.DispatchAsync(request, RegistrationConnectionCallback); } } catch (Exception e) { Debug.Console(0, this, "ERROR: Initilizing Room: {0}", e); + RegisterLockEvent.Set(); } } @@ -342,9 +353,9 @@ namespace PepperDash.Essentials /// /// /// - void PostConnectionCallback(HttpClientResponse resp, HTTP_CALLBACK_ERROR err) + void RegistrationConnectionCallback(HttpClientResponse resp, HTTP_CALLBACK_ERROR err) { - Debug.Console(1, this, "PostConnectionCallback: {0}", err); + Debug.Console(1, this, "RegistrationConnectionCallback: {0}", err); try { if (resp != null && resp.Code == 200) @@ -355,7 +366,7 @@ namespace PepperDash.Essentials ServerReconnectTimer = null; } - ConnectStreamClient(null); + ConnectStreamClient(); } else { @@ -372,12 +383,13 @@ namespace PepperDash.Essentials { Debug.Console(1, this, "Error Initializing Stream Client: {0}", e); } + RegisterLockEvent.Set(); } /// /// Executes when we don't get a heartbeat message in time. Triggers reconnect. /// - /// + /// For CTimer callback. Not used void HeartbeatExpiredTimerCallback(object o) { Debug.Console(1, this, "Heartbeat Timer Expired."); @@ -427,7 +439,7 @@ namespace PepperDash.Essentials /// Connects the SSE Client /// /// - void ConnectStreamClient(object o) + void ConnectStreamClient() { Debug.Console(0, this, "Initializing Stream client to server."); diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index 3c53b95c..5f8e5f68 100644 Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll index 2d7c7218..21282939 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ