diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp index 28f93084c13d29eb2dd363dbaa03719efaa63e76..9e03b50c03ad434319bfbddf41e680c46f6b6f7d 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.cpp @@ -14,13 +14,14 @@ namespace armarx::armem::articulated_object { - - armem::articulated_object::ArticulatedObject + // Slow version with filesystem access. It runs CMake for each project / environment variable. + static armem::articulated_object::ArticulatedObject convert(const VirtualRobot::Robot& obj, const armem::Time& timestamp) { ARMARX_DEBUG << "Filename is " << obj.getFilename(); + // this is very inefficient. It runs CMake for each project const std::vector<std::string> packages = armarx::CMakePackageFinder::FindAllArmarXSourcePackages(); const std::string package = armarx::ArmarXDataPath::getProject(packages, obj.getFilename()); @@ -53,8 +54,9 @@ namespace armarx::armem::articulated_object .timestamp = timestamp}; } - armem::articulated_object::ArticulatedObject - convert2(const VirtualRobot::Robot& obj, const armem::Time& timestamp) + // fast version without filesystem (CMake) access + static armem::articulated_object::ArticulatedObject + convertWithoutPackagePath(const VirtualRobot::Robot& obj, const armem::Time& timestamp) { ARMARX_DEBUG << "Filename is " << obj.getFilename(); @@ -69,30 +71,30 @@ namespace armarx::armem::articulated_object } bool - ArticulatedObjectWriter::storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, - const armem::Time& timestamp, - const bool isStatic) + ArticulatedObjectWriter::storeArticulatedObjectWithObjectClass( + const VirtualRobot::RobotPtr& articulatedObject, + const armem::Time& timestamp, + const bool isStatic) { ARMARX_CHECK_NOT_NULL(articulatedObject); armarx::armem::articulated_object::ArticulatedObject armemArticulatedObject = - convert(*articulatedObject, Time::Now()); + convert(*articulatedObject, timestamp); return store(armemArticulatedObject, isStatic); } bool - ArticulatedObjectWriter::storeArticulatedObject2( - const VirtualRobot::RobotPtr& articulatedObject, - const armem::Time& timestamp, - const bool isStatic) + ArticulatedObjectWriter::storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, + const armem::Time& timestamp, + const bool isStatic) { ARMARX_CHECK_NOT_NULL(articulatedObject); armarx::armem::articulated_object::ArticulatedObject armemArticulatedObject = - convert2(*articulatedObject, Time::Now()); + convertWithoutPackagePath(*articulatedObject, timestamp); return storeInstance(armemArticulatedObject, isStatic); } diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h index 4171529f5733c1294fe94b414b1fcd48492aca1c..4d6fca627cc7a6c234c7f75b4688d0b56a145708 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h @@ -14,15 +14,22 @@ namespace armarx::armem::articulated_object public: using Writer::Writer; + /** + * @brief Stores the articulated object in the memory. + * + */ bool storeArticulatedObject(const VirtualRobot::RobotPtr& articulatedObject, const armem::Time& timestamp, bool isStatic = false); - bool storeArticulatedObject2(const VirtualRobot::RobotPtr& articulatedObject, - const armem::Time& timestamp, - bool isStatic = false); + /** + * @brief Stores the articulated object. If the object class in unknown, + * it will also be stored in the corresponding class core segment. + */ + bool storeArticulatedObjectWithObjectClass(const VirtualRobot::RobotPtr& articulatedObject, + const armem::Time& timestamp, + bool isStatic = false); private: - }; } // namespace armarx::armem::articulated_object