Commit 571913d7 authored by Sylvain Renault's avatar Sylvain Renault
Browse files

Registration of modules optimized if same modules register.

parent 42f62762
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -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="))
                {