From 571913d7a37dfa8124f9193024b04c67185c0e91 Mon Sep 17 00:00:00 2001 From: Sylvain Renault Date: Wed, 25 Sep 2024 16:21:54 +0200 Subject: [PATCH] Registration of modules optimized if same modules register. --- .../ControllersImpl/WebSocketController.cs | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/server/worldanalysis/src/ETSI.ARF.OpenAPI.WorldAnalysis/ETSI-ARF/ControllersImpl/WebSocketController.cs b/server/worldanalysis/src/ETSI.ARF.OpenAPI.WorldAnalysis/ETSI-ARF/ControllersImpl/WebSocketController.cs index 8229311..4731534 100644 --- a/server/worldanalysis/src/ETSI.ARF.OpenAPI.WorldAnalysis/ETSI-ARF/ControllersImpl/WebSocketController.cs +++ b/server/worldanalysis/src/ETSI.ARF.OpenAPI.WorldAnalysis/ETSI-ARF/ControllersImpl/WebSocketController.cs @@ -157,14 +157,26 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis.Controllers registered = true; firstTime = false; currentName = msg.Split('=')[1]; + + // If module exist already reuse it + Module module = null; + foreach (var item in WorldAnalysisConnections.Singleton.modules) if (item.name == currentName) module = item; + if (module != null) + { + currentModule = module; + currentModule.name = currentName; + currentModule.websockets = this; + currentModule.capabilities.Clear(); + } + if (currentModule == null && currentClient == null) { currentModule = new Module(); currentModule.name = currentName; currentModule.websockets = this; WorldAnalysisConnections.Singleton.modules.Add(currentModule); - SendText($"ARF World Analysis Server: #{ WebSocketControllerInstanceCount } You are now registered as module: { currentName }"); } + SendText($"ARF World Analysis Server: #{ WebSocketControllerInstanceCount } You are now registered as module: { currentName }"); } else if (msg.StartsWith("RegisterClient=")) { @@ -249,8 +261,13 @@ namespace ETSI.ARF.OpenAPI.WorldAnalysis.Controllers { // Module is sending their capabilities string[] str_cap = msg.Split('='); - Capability _c = JsonConvert.DeserializeObject(str_cap[1]); - if (currentModule != null) currentModule.capabilities.Add(_c); + string moduleName = str_cap[1]; + Capability _c = JsonConvert.DeserializeObject(str_cap[2]); + + // Has the module already send their capabilities? + Module module = null; + foreach (var item in WorldAnalysisConnections.Singleton.modules) if (item.name == moduleName) module = item; + if (module != null) module.capabilities.Add(_c); } else if (msg.StartsWith("NewPose=")) { -- GitLab