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