diff --git a/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp b/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp index 41ef71d9d14729e5f272348ef6e3d633da196a33..7b3a1d05817c9c25675abe2e5b8ab011aba1d92d 100644 --- a/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp +++ b/source/RobotAPI/libraries/armem/server/ComponentPlugin.cpp @@ -18,13 +18,16 @@ namespace armarx::armem::server::plugins void ComponentPlugin::postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) { MemoryNameSystemComponentPlugin::postCreatePropertyDefinitions(properties); - properties->topic(memoryListener, this->parent<ComponentPluginUser>().memoryListenerDefaultName); - properties->optional(this->parent<ComponentPluginUser>().longtermMemory.dbsettings.host, "Longtermmemoryhost"); - properties->optional(this->parent<ComponentPluginUser>().longtermMemory.dbsettings.port, "Longtermmemoryport"); - properties->optional(this->parent<ComponentPluginUser>().longtermMemory.dbsettings.user, "Longtermmemoryuser"); - properties->optional(this->parent<ComponentPluginUser>().longtermMemory.dbsettings.password, "Longtermmemorypassword"); - properties->optional(this->parent<ComponentPluginUser>().longtermMemory.dbsettings.database, "Longtermmemorydatabase"); + ComponentPluginUser& parent = this->parent<ComponentPluginUser>(); + properties->topic(memoryListener, parent.memoryListenerDefaultName); + + properties->optional(parent.longtermMemoryEnabled, "ltm.00_enabled"); + properties->optional(parent.longtermMemory.dbsettings.host, "ltm.10_host"); + properties->optional(parent.longtermMemory.dbsettings.port, "ltm.11_port"); + properties->optional(parent.longtermMemory.dbsettings.user, "ltm.20_user"); + properties->optional(parent.longtermMemory.dbsettings.password, "ltm.21_password"); + properties->optional(parent.longtermMemory.dbsettings.database, "ltm.22_database"); } @@ -39,7 +42,10 @@ namespace armarx::armem::server::plugins parent.iceMemory.setMemoryListener(memoryListener); // establishing connection to ltm and mongodb - parent.longtermMemory.reload(); + if (parent.longtermMemoryEnabled) + { + parent.longtermMemory.reload(); + } } @@ -145,8 +151,7 @@ namespace armarx::armem::server // LTM LOADING data::StoreResult ComponentPluginUser::store(const data::StoreInput& input, const Ice::Current&) { - std::scoped_lock lock(workingMemoryMutex); - std::scoped_lock lock2(longtermMemoryMutex); + std::scoped_lock lock(workingMemoryMutex, longtermMemoryMutex); return iceMemory.store(input); } diff --git a/source/RobotAPI/libraries/armem/server/ComponentPlugin.h b/source/RobotAPI/libraries/armem/server/ComponentPlugin.h index 4ed6c107e6c1f29144ed2ed8ede7e01a3b4ed710..5f9ef1d574df06b1644d733e494273ce0660dbbf 100644 --- a/source/RobotAPI/libraries/armem/server/ComponentPlugin.h +++ b/source/RobotAPI/libraries/armem/server/ComponentPlugin.h @@ -100,6 +100,7 @@ namespace armarx::armem::server wm::Memory workingMemory; std::mutex workingMemoryMutex; + bool longtermMemoryEnabled = true; ltm::Memory longtermMemory; std::mutex longtermMemoryMutex;