diff --git a/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.cpp b/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.cpp index e380ad6da2f2d61035ade8eb81caf0cc69424060..dffd3d2cb5ae44c0f95830ef780c0494253d8830 100644 --- a/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.cpp +++ b/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.cpp @@ -42,6 +42,9 @@ namespace armarx setMemoryName(armem::index::memoryID.memoryName); + defs->optional(properties.maxHistorySize, "p.maxHistorySize", "The maximum size of entity histories.") + .setMin(1); + return defs; } @@ -56,10 +59,16 @@ namespace armarx void IndexMemory::onInitComponent() { - workingMemory().addCoreSegment(armem::index::namedSegmentID.coreSegmentName, - armem::index::arondto::Named::ToAronType()); - workingMemory().addCoreSegment(armem::index::spatialSegmentID.coreSegmentName, - armem::index::arondto::Spatial::ToAronType()); + size_t maxHistorySize = static_cast<size_t>(std::max(1, properties.maxHistorySize)); + workingMemory() + .addCoreSegment(armem::index::namedSegmentID.coreSegmentName, + armem::index::arondto::Named::ToAronType()) + .setMaxHistorySize(maxHistorySize); + + workingMemory() + .addCoreSegment(armem::index::spatialSegmentID.coreSegmentName, + armem::index::arondto::Spatial::ToAronType()) + .setMaxHistorySize(maxHistorySize); } diff --git a/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.h b/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.h index f3db3c3d87c9501c708ed405c8f2860efa75a2de..b272fcafc11e7d398b95175a26d1fcbf5fdf75d6 100644 --- a/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.h +++ b/source/RobotAPI/components/armem/server/IndexMemory/IndexMemory.h @@ -70,6 +70,7 @@ namespace armarx private: struct Properties { + int maxHistorySize = 1024; }; Properties properties;