From 930d158f4d24712e23ffe3573a91c503e6277cf5 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Wed, 2 Jun 2021 17:42:31 +0200 Subject: [PATCH] termination condition + doxy comment --- .../RobotUnitComponentPlugin.cpp | 4 ++-- .../RobotUnitComponentPlugin.h | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp index b669bf0db..7d32ae794 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp @@ -137,11 +137,11 @@ namespace armarx return *plugin; } - void RobotUnitComponentPluginUser::waitUntilRobotUnitIsRunning() const + void RobotUnitComponentPluginUser::waitUntilRobotUnitIsRunning(const std::function<bool()>& termCond) const { ARMARX_INFO << "Waiting until robot unit is running ..."; - while ((isNullptr(getRobotUnit()) or (not getRobotUnit()->isRunning()))) + while ((not termCond()) and ((isNullptr(getRobotUnit()) or (not getRobotUnit()->isRunning())))) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); } diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h index 5b8369776..63d78de7d 100644 --- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h +++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h @@ -80,7 +80,17 @@ namespace armarx RobotUnitComponentPluginUser(); RobotUnitInterfacePrx getRobotUnit() const; - void waitUntilRobotUnitIsRunning() const; + + /** + * @brief Waits until the robot unit is running. + * + * Although the robot unit proxy might be initialized (\see getRobotUnit()), the robot unit might + * not be fully initialized. + * + * @param termCond Termination condition. If it evaluates to true, waitUntilRobotUnitIsRunning returns without waiting + * for the robot unit to become available. + */ + void waitUntilRobotUnitIsRunning(const std::function<bool()>& termCond = [] {return false;}) const; plugins::RobotUnitComponentPlugin& getRobotUnitComponentPlugin(); private: -- GitLab