Skip to content
Snippets Groups Projects
Commit aa1ccc56 authored by Fabian Reister's avatar Fabian Reister
Browse files

ObjectPoseProviderPlugin: using Proxy instead of Topic

parent f7f72f37
No related branches found
No related tags found
1 merge request!488Feature/object provider skills
......@@ -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
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment