15 const std::shared_ptr<Processors>& filters,
16 const std::shared_ptr<persistence::MemoryPersistenceStrategy>& persistenceStrategy) :
17 CoreSegmentBase(exportName, id, filters),
18 persistenceStrategy_(persistenceStrategy) {}
28 ARMARX_DEBUG <<
"Has strategy=" << (persistenceStrategy_ !=
nullptr);
29 ARMARX_DEBUG <<
"Strategy identifier=" << persistenceStrategy_->getIdentifier();
30 ARMARX_DEBUG <<
"Strategy export name=" << persistenceStrategy_->getExportName();
32 for (
auto& providerSegmentKey : persistenceStrategy_->getContainerKeys(
id()))
34 std::shared_ptr<persistence::MemoryPersistenceStrategy> providerSegmentPersistenceStrategy(persistenceStrategy_);
37 id().withProviderSegmentName(providerSegmentKey),
39 providerSegmentPersistenceStrategy);
53 return persistenceStrategy_->containsContainer(
id(), providerSegmentName);
56 std::shared_ptr<ProviderSegment>
70 id().withProviderSegmentName(providerSegmentName),
72 persistenceStrategy_);
91 auto aron = conv.convert(filecontent,
"");
96 [&wmCoreSegment](
auto& ltmProviderSegment)
99 ltmProviderSegment.loadAllReferences(wmProviderSegment);
104 armem::wm::ProviderSegment existingWmProviderSegment = wmCoreSegment.getProviderSegment(wmProviderSegment.name());
105 existingWmProviderSegment.append(wmProviderSegment);
109 wmCoreSegment.addProviderSegment(wmProviderSegment);
123 auto& conv =
processors->defaultTypeConverter;
127 auto& conv =
processors->defaultTypeConverter;
130 auto aron = conv.convert(filecontent,
"");
135 [&wmCoreSegment, &
n](
auto& ltmProviderSegment)
138 ltmProviderSegment.loadLatestNReferences(
n, wmProviderSegment);
143 armem::wm::ProviderSegment existingWmProviderSegment = wmCoreSegment.getProviderSegment(wmProviderSegment.name());
144 existingWmProviderSegment.append(wmProviderSegment);
148 wmCoreSegment.addProviderSegment(wmProviderSegment);
163 [&](
auto& wmProviderSegment)
165 std::shared_ptr<persistence::MemoryPersistenceStrategy> providerSegmentPersistenceStrategy(persistenceStrategy_);
168 id().withProviderSegmentName(wmProviderSegment.id().providerSegmentName),
170 providerSegmentPersistenceStrategy);
172 ltmProviderSegment.
resolve(wmProviderSegment);
183 if (
id().coreSegmentName.empty())
186 <<
"During storage of segment '" << wmCoreSegment.
id().
str()
187 <<
"' I noticed that the corresponding LTM has no id set. "
188 <<
"I set the id of the LTM to the same name, however this should not happen!";
204 auto& conv =
processors->defaultTypeConverter;
206 auto [vec, modeSuffix] = conv.convert(wmCoreSegment.
aronType());
210 persistenceStrategy_->storeItem(
id(), key, vec);
214 ARMARX_DEBUG <<
"CoreSegment does not have aron type, so aron type information "
215 "cannot be exported";
220 [&](
const auto& wmProviderSegment)
222 std::shared_ptr<persistence::MemoryPersistenceStrategy> providerSegmentPersistenceStrategy(persistenceStrategy_);
225 id().withProviderSegmentName(wmProviderSegment.id().providerSegmentName),
227 providerSegmentPersistenceStrategy);
229 ltmProviderSegment.
store(wmProviderSegment, simulatedVersion);