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 822931138c2f13ab348f117112b00f5c7fc3360e..47315344237a9b087410b0bca2610e1fdb2a7444 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<Capability>(str_cap[1]); - if (currentModule != null) currentModule.capabilities.Add(_c); + string moduleName = str_cap[1]; + Capability _c = JsonConvert.DeserializeObject<Capability>(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=")) {