diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp index 5e95d6cb264a63600214ce0ec384e4b5dc0131bf..781eed48ee2c236444b4480065f51f246a797f2a 100644 --- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp +++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp @@ -49,6 +49,7 @@ namespace armarx::armem::server::obj memory.name() = defaultMemoryName; defs->optional(memory.name(), prefix + "MemoryName", "Name of this memory server."); + classSegment.defineProperties(defs, prefix + "cls."); instance::SegmentAdapter::defineProperties(defs, prefix + "inst."); return defs; @@ -56,7 +57,8 @@ namespace armarx::armem::server::obj ObjectMemory::ObjectMemory() : server::ComponentPluginUser(), - instance::SegmentAdapter(server::ComponentPluginUser::iceMemory, server::ComponentPluginUser::memoryMutex) + instance::SegmentAdapter(server::ComponentPluginUser::iceMemory, server::ComponentPluginUser::memoryMutex), + classSegment(server::ComponentPluginUser::iceMemory) { } @@ -70,6 +72,23 @@ namespace armarx::armem::server::obj memory.name() = defaultMemoryName; instance::SegmentAdapter::init(); + + try + { + classSegment.init(); + } + catch (const LocalException& e) + { + ARMARX_ERROR << "Failed to init class segment. Reason: \n" << e.what(); + } + catch (const std::exception& e) + { + ARMARX_ERROR << "Failed to init class segment. Reason: \n" << e.what(); + } + catch (...) + { + ARMARX_ERROR << "Failed to init class segment for unknown reason."; + } } void ObjectMemory::onConnectComponent() diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h index 52062816fbdf18079bba724d2a025d9ee0f55e8d..0a53588c1e3fa4f5ceef174620628611eaddc3f1 100644 --- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h +++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h @@ -22,6 +22,7 @@ #pragma once +#include <memory> #include <mutex> #include <VirtualRobot/VirtualRobot.h> @@ -30,11 +31,14 @@ #include <RobotAPI/interface/armem/server/ObjectMemoryInterface.h> -#include <RobotAPI/libraries/armem/server/ComponentPlugin.h> -#include <RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.h> #include <RobotAPI/libraries/RobotAPIComponentPlugins/ArVizComponentPlugin.h> #include <RobotAPI/libraries/RobotAPIComponentPlugins/RobotStateComponentPlugin.h> +#include <RobotAPI/libraries/armem/server/ComponentPlugin.h> + +#include <RobotAPI/libraries/armem_objects/server/class/Segment.h> +#include <RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.h> + #define ICE_CURRENT_ARG const Ice::Current& = Ice::emptyCurrent @@ -105,6 +109,9 @@ namespace armarx::armem::server::obj VirtualRobot::RobotPtr robot; + clazz::Segment classSegment; + + struct RemoteGuiTab : armarx::RemoteGui::Client::Tab { instance::SegmentAdapter::RemoteGui instance;