From aa1ccc5682e050b81b40b9a6baf77688f73c6014 Mon Sep 17 00:00:00 2001 From: Fabian Reister <fabian.reister@kit.edu> Date: Thu, 26 Sep 2024 16:41:51 +0200 Subject: [PATCH] ObjectPoseProviderPlugin: using Proxy instead of Topic --- .../plugins/ObjectPoseProviderPlugin.cpp | 54 +++++++++---------- .../plugins/ObjectPoseProviderPlugin.h | 30 ++++------- 2 files changed, 37 insertions(+), 47 deletions(-) diff --git a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.cpp b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.cpp index 6aef209e6..ca1aab83a 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.cpp +++ b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.cpp @@ -2,43 +2,48 @@ #include <ArmarXCore/core/Component.h> - namespace armarx::plugins { - void ObjectPoseProviderPlugin::postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) + void + ObjectPoseProviderPlugin::postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) { if (!properties->hasDefinition(makePropertyName(PROPERTY_NAME))) { properties->defineOptionalProperty<std::string>( - makePropertyName(PROPERTY_NAME), - "ObjectPoseTopic", - "Name of the object pose topic."); + makePropertyName(PROPERTY_NAME), "ObjectMemory", "Name of the object memory."); } } - void ObjectPoseProviderPlugin::preOnInitComponent() + void + ObjectPoseProviderPlugin::preOnInitComponent() { - parent<Component>().offeringTopicFromProperty(makePropertyName(PROPERTY_NAME)); + parent<Component>().usingProxyFromProperty(makePropertyName(PROPERTY_NAME)); } - void ObjectPoseProviderPlugin::preOnConnectComponent() + void + ObjectPoseProviderPlugin::preOnConnectComponent() { - parent<ObjectPoseProviderPluginUser>().objectPoseTopic = createObjectPoseTopic(); + parent<ObjectPoseProviderPluginUser>().objectPoseTopic = + parent<Component>().getProxyFromProperty<objpose::ObjectPoseStorageInterfacePrx>( + makePropertyName(PROPERTY_NAME)); } - void ObjectPoseProviderPlugin::postOnConnectComponent() + void + ObjectPoseProviderPlugin::postOnConnectComponent() { - ObjectPoseProviderPluginUser& parent = this->parent<ObjectPoseProviderPluginUser>(); - objpose::ObjectPoseTopicPrx& topic = parent.objectPoseTopic; - if (topic) + auto& parent = this->parent<ObjectPoseProviderPluginUser>(); + if (parent.objectPoseTopic) { objpose::ProviderInfo info = parent.getProviderInfo(); if (!info.proxy) { - info.proxy = ::armarx::objpose::ObjectPoseProviderPrx::checkedCast(parent.getProxy()); + info.proxy = + ::armarx::objpose::ObjectPoseProviderPrx::checkedCast(parent.getProxy()); } - topic->reportProviderAvailable(parent.getName(), info); + + ARMARX_INFO << "Reporting provider `" << parent.getName() << "` availability."; + parent.objectPoseTopic->reportProviderAvailable(parent.getName(), info); } else { @@ -46,13 +51,7 @@ namespace armarx::plugins } } - objpose::ObjectPoseTopicPrx ObjectPoseProviderPlugin::createObjectPoseTopic() - { - return parent<Component>().getTopicFromProperty<objpose::ObjectPoseTopicPrx>(makePropertyName(PROPERTY_NAME)); - } - -} - +} // namespace armarx::plugins namespace armarx { @@ -62,7 +61,10 @@ namespace armarx addPlugin(plugin); } - objpose::provider::RequestObjectsOutput ObjectPoseProviderPluginUser::requestObjects(const objpose::provider::RequestObjectsInput& input, const Ice::Current&) + objpose::provider::RequestObjectsOutput + ObjectPoseProviderPluginUser::requestObjects( + const objpose::provider::RequestObjectsInput& input, + const Ice::Current&) { // ARMARX_INFO << "Requested " << input.objectIDs.size() << " objects for " << input.relativeTimeoutMS << " ms."; objpose::provider::RequestObjectsOutput output; @@ -73,9 +75,5 @@ namespace armarx return output; } - objpose::ObjectPoseTopicPrx ObjectPoseProviderPluginUser::createObjectPoseTopic() - { - return plugin->createObjectPoseTopic(); - } -} +} // namespace armarx diff --git a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.h b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.h index 1d0191ed6..6e7fd2ebb 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.h +++ b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseProviderPlugin.h @@ -3,7 +3,7 @@ #include <ArmarXCore/core/ComponentPlugin.h> #include <RobotAPI/interface/objectpose/ObjectPoseProvider.h> - +#include <RobotAPI/interface/objectpose/ObjectPoseStorageInterface.h> namespace armarx::plugins { @@ -11,7 +11,6 @@ namespace armarx::plugins class ObjectPoseProviderPlugin : public ComponentPlugin { public: - using ComponentPlugin::ComponentPlugin; void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override; @@ -20,17 +19,12 @@ namespace armarx::plugins void preOnConnectComponent() override; void postOnConnectComponent() override; - objpose::ObjectPoseTopicPrx createObjectPoseTopic(); - - private: - - static constexpr const char* PROPERTY_NAME = "ObjectPoseTopicName"; + static constexpr const char* PROPERTY_NAME = "ObjectMemoryName"; }; -} - +} // namespace armarx::plugins #include <ArmarXCore/core/ManagedIceObject.h> @@ -41,24 +35,22 @@ namespace armarx * @brief Provides an `objpose::ObjectPoseTopicPrx objectPoseTopic` as member variable. */ class ObjectPoseProviderPluginUser : - virtual public ManagedIceObject - , virtual public objpose::ObjectPoseProvider + virtual public ManagedIceObject, + virtual public objpose::ObjectPoseProvider { public: - ObjectPoseProviderPluginUser(); /// Implement to process object requests (empty default implementation). - objpose::provider::RequestObjectsOutput requestObjects(const objpose::provider::RequestObjectsInput& input, const Ice::Current&) override; - - objpose::ObjectPoseTopicPrx createObjectPoseTopic(); + objpose::provider::RequestObjectsOutput + requestObjects(const objpose::provider::RequestObjectsInput& input, + const Ice::Current&) override; - objpose::ObjectPoseTopicPrx objectPoseTopic; + // objpose::ObjectPoseStorageInterfacePrx createObjectPoseStorage(); + objpose::ObjectPoseStorageInterfacePrx objectPoseTopic; private: - armarx::plugins::ObjectPoseProviderPlugin* plugin = nullptr; - }; -} +} // namespace armarx -- GitLab