diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.cpp b/source/RobotAPI/components/units/GraspCandidateObserver.cpp index 527216c96a63d769c625cc5deeae30fab64fef47..d0c628d9a9091240bdd507e9c5e8fad1f67de472 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.cpp +++ b/source/RobotAPI/components/units/GraspCandidateObserver.cpp @@ -274,6 +274,15 @@ BimanualGraspCandidateSeq GraspCandidateObserver::getSelectedBimanualCandidates( return selectedBimanualCandidates; } +void GraspCandidateObserver::clearCandidatesByProvider(const std::string& providerName, const Ice::Current&) +{ + std::unique_lock lock(dataMutex); + + if (candidates.count(providerName)) + { + candidates[providerName].clear(); + } +} bool GraspCandidateObserver::hasProvider(const std::string& providerName) { diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.h b/source/RobotAPI/components/units/GraspCandidateObserver.h index beb95c3a2bde2c9bd3c568031dd4ce2db7939d07..0124ab79fbba4f14c8d66ee9a0de3c315a7e3e61 100644 --- a/source/RobotAPI/components/units/GraspCandidateObserver.h +++ b/source/RobotAPI/components/units/GraspCandidateObserver.h @@ -104,6 +104,9 @@ namespace armarx void setSelectedBimanualCandidates(const grasping::BimanualGraspCandidateSeq& candidates, const ::Ice::Current&) override; grasping::BimanualGraspCandidateSeq getSelectedBimanualCandidates(const Ice::Current&) override; + + void clearCandidatesByProvider(const std::string& providerName, const Ice::Current& c) override; + private: bool hasProvider(const std::string& providerName); void checkHasProvider(const std::string& providerName); diff --git a/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice b/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice index 68dae5a2ab9393fae6bed6f8b49a5977ec770851..24164d0ebe50fb798af41e8e48637c3437e6151d 100644 --- a/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice +++ b/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice @@ -66,6 +66,8 @@ module armarx void setSelectedBimanualCandidates(BimanualGraspCandidateSeq candidates); BimanualGraspCandidateSeq getSelectedBimanualCandidates(); + void clearCandidatesByProvider(string providerName); + }; };