From d10c77b090f358059db10532d6a37b1262073f2f Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 8 Sep 2021 11:50:36 +0200
Subject: [PATCH] fix: MemoryNameSystem waitForServer: missing call to
 processOnce() whenever a new server connects to the MNS

---
 source/RobotAPI/libraries/armem/mns/MemoryNameSystem.cpp | 9 ++++++++-
 source/RobotAPI/libraries/armem/mns/MemoryNameSystem.h   | 2 ++
 source/RobotAPI/libraries/armem/mns/Registry.h           | 2 +-
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.cpp b/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.cpp
index a80a189ff..a0c606a99 100644
--- a/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.cpp
+++ b/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.cpp
@@ -40,6 +40,14 @@ namespace armarx::armem::mns
             }
         }
     }
+    
+    dto::RegisterServerResult MemoryNameSystem::registerServer(const dto::RegisterServerInput& input) 
+    {
+        const auto result = Registry::registerServer(input);
+        waitForServer_processOnce();
+
+        return result;
+    }
 
 
     armarx::RemoteGui::Client::GridLayout MemoryNameSystem::RemoteGui_buildInfoGrid()
@@ -92,4 +100,3 @@ namespace armarx::armem::mns
     }
 
 }
-
diff --git a/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.h b/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.h
index 51e4719f1..e0cf5b887 100644
--- a/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.h
+++ b/source/RobotAPI/libraries/armem/mns/MemoryNameSystem.h
@@ -31,6 +31,8 @@ namespace armarx::armem::mns
 
         void waitForServer_processOnce();
 
+        dto::RegisterServerResult registerServer(const dto::RegisterServerInput& input) override;
+
 
         /// Builds a RemoteGui grid containing information about registered memories.
         armarx::RemoteGui::Client::GridLayout RemoteGui_buildInfoGrid();
diff --git a/source/RobotAPI/libraries/armem/mns/Registry.h b/source/RobotAPI/libraries/armem/mns/Registry.h
index bf9348d15..c1965bdac 100644
--- a/source/RobotAPI/libraries/armem/mns/Registry.h
+++ b/source/RobotAPI/libraries/armem/mns/Registry.h
@@ -35,7 +35,7 @@ namespace armarx::armem::mns
          * Causes threads waiting in `waitForMemory()` to resume if the respective
          * memory server was added.
          */
-        dto::RegisterServerResult registerServer(const dto::RegisterServerInput& input);
+        virtual dto::RegisterServerResult registerServer(const dto::RegisterServerInput& input);
         /**
          * @brief Remove a server entry.
          */
-- 
GitLab