15 const std::string& exportName,
17 const std::shared_ptr<Processors>& filters,
18 const std::shared_ptr<persistence::MemoryPersistenceStrategy>& persistenceStrategy) :
19 CoreSegmentBase(exportName, id, filters), persistenceStrategy_(persistenceStrategy)
33 << (persistenceStrategy_ !=
35 ARMARX_DEBUG <<
"Strategy identifier=" << persistenceStrategy_->getIdentifier();
36 ARMARX_DEBUG <<
"Strategy export name=" << persistenceStrategy_->getExportName();
38 for (
auto& providerSegmentKey : persistenceStrategy_->getContainerKeys(
id()))
40 std::shared_ptr<persistence::MemoryPersistenceStrategy>
41 providerSegmentPersistenceStrategy(persistenceStrategy_);
44 id().withProviderSegmentName(providerSegmentKey),
46 providerSegmentPersistenceStrategy);
60 return persistenceStrategy_->containsContainer(
id(), providerSegmentName);
63 std::shared_ptr<ProviderSegment>
77 id().withProviderSegmentName(providerSegmentName),
79 persistenceStrategy_);
93 if (persistenceStrategy_->containsItem(
98 auto filecontent = persistenceStrategy_->retrieveItem(
100 auto aron = conv.convert(filecontent,
"");
105 [&wmCoreSegment](
auto& ltmProviderSegment)
108 ltmProviderSegment.loadAllReferences(wmProviderSegment);
113 armem::wm::ProviderSegment existingWmProviderSegment =
114 wmCoreSegment.getProviderSegment(wmProviderSegment.name());
115 existingWmProviderSegment.append(wmProviderSegment);
119 wmCoreSegment.addProviderSegment(wmProviderSegment);
133 auto& conv =
processors->defaultTypeConverter;
135 if (persistenceStrategy_->containsItem(
138 auto& conv =
processors->defaultTypeConverter;
140 auto filecontent = persistenceStrategy_->retrieveItem(
142 auto aron = conv.convert(filecontent,
"");
147 [&wmCoreSegment, &
n](
auto& ltmProviderSegment)
150 ltmProviderSegment.loadLatestNReferences(
n, wmProviderSegment);
155 armem::wm::ProviderSegment existingWmProviderSegment =
156 wmCoreSegment.getProviderSegment(wmProviderSegment.name());
157 existingWmProviderSegment.append(wmProviderSegment);
161 wmCoreSegment.addProviderSegment(wmProviderSegment);
176 [&](
auto& wmProviderSegment)
178 std::shared_ptr<persistence::MemoryPersistenceStrategy>
179 providerSegmentPersistenceStrategy(persistenceStrategy_);
183 id().withProviderSegmentName(wmProviderSegment.id().providerSegmentName),
185 providerSegmentPersistenceStrategy);
187 ltmProviderSegment.
resolve(wmProviderSegment);
198 if (
id().coreSegmentName.empty())
201 <<
"During storage of segment '" << wmCoreSegment.
id().
str()
202 <<
"' I noticed that the corresponding LTM has no id set. "
203 <<
"I set the id of the LTM to the same name, however this should not happen!";
212 auto& conv =
processors->defaultTypeConverter;
214 auto [vec, modeSuffix] = conv.convert(wmCoreSegment.
aronType());
218 persistenceStrategy_->storeItem(
id(), key, vec);
219 ARMARX_DEBUG <<
"Stored type information for CoreSegment "
224 ARMARX_DEBUG <<
"CoreSegment does not have aron type, so aron type information "
225 "cannot be exported";
230 [&](
const auto& wmProviderSegment)
232 std::shared_ptr<persistence::MemoryPersistenceStrategy>
233 providerSegmentPersistenceStrategy(persistenceStrategy_);
237 id().withProviderSegmentName(wmProviderSegment.id().providerSegmentName),
239 providerSegmentPersistenceStrategy);
241 ltmProviderSegment.
store(wmProviderSegment, simulatedVersion);