Memory.cpp
Go to the documentation of this file.
1 #include "Memory.h"
2 
3 #include <memory>
4 
7 
14 
16 {
17  void
18  Memory::_configure(const nlohmann::json& json)
19  {
20  std::lock_guard l(ltm_mutex);
21 
23 
26 
27  std::string exportPath = p.export_path;
28 
29  std::string persistenceStrategiesStr = p.persistenceStrategies;
30 
31  ARMARX_INFO << "Persistence strategies=" << persistenceStrategiesStr;
32 
33  std::vector<std::string> persistenceStrategies = split(persistenceStrategiesStr, ',');
34 
35  ARMARX_INFO << "Found " << persistenceStrategies.size() << " persistence strategies";
36 
37 
38  std::string identifiersStr = p.persistenceStrategyIdentifier;
39  std::vector<std::string> identifiers = split(identifiersStr, ',');
40  std::string identifier = "defaultStrategy";
41  ARMARX_INFO << "Persistence identifiers=" << identifiersStr;
42  ARMARX_INFO << "Found " << identifiers.size() << " persistence strategies identifiers";
43 
44 
45  std::shared_ptr<armem::server::ltm::persistence::RedundantPersistenceStrategy>
46  redundantPersistence =
47  std::make_shared<armem::server::ltm::persistence::RedundantPersistenceStrategy>();
48  redundantPersistence->setExportName(getExportName());
49 
50  for (size_t i = 0; i < persistenceStrategies.size(); i++)
51  {
52  std::string s = persistenceStrategies.at(i);
53 
54  if (i < identifiers.size())
55  {
56  identifier = identifiers.at(i);
57  }
58 
59  if (s == "disk")
60  {
61  ARMARX_IMPORTANT << "Using persistence strategy=" << s;
62  ARMARX_INFO << "MemoryID=" << getMemoryID().str();
63  ARMARX_INFO << "Identifier=" << identifier;
64  ARMARX_INFO << "Export name=" << getExportName();
65  ARMARX_INFO << "Export path=" << exportPath;
66  ARMARX_INFO << "Min available disk space=" << p.minDiskSpace;
67 
68  std::shared_ptr<armem::server::ltm::persistence::DiskPersistence> diskPersistence =
69  std::make_shared<armem::server::ltm::persistence::DiskPersistence>(
70  std::filesystem::path(exportPath));
71  diskPersistence->setIdentifier(identifier);
72  diskPersistence->setExportName(getExportName());
73  diskPersistence->setMinAvailableDiskSpace(p.minDiskSpace);
74 
75  redundantPersistence->addStrategy(diskPersistence);
76  }
77  else if (s == "rest")
78  {
79  ARMARX_IMPORTANT << "Using persistence strategy=" << s;
80  ARMARX_WARNING << "Persistence strategy=" << s << " currently deactivated";
81  /**
82  ARMARX_INFO << "MemoryID=" << getMemoryID().str();
83  ARMARX_INFO << "Identifier=" << identifier;
84  ARMARX_INFO << "Export name=" << getExportName();
85  ARMARX_INFO << "Host=" << p.restHost;
86  ARMARX_INFO << "Port=" << p.restPort;
87  ARMARX_INFO << "DisableIfNotAvailable=" << p.restDisableIfNotAvailable;
88 
89  std::shared_ptr<armem::server::ltm::persistence::RestPersistence> restPersistence =
90  std::make_shared<armem::server::ltm::persistence::RestPersistence>(
91  identifier,
92  getExportName(),
93  p.restHost,
94  p.restPort,
95  p.restDisableIfNotAvailable);
96 
97 
98  redundantPersistence->addStrategy(restPersistence);
99  */
100  }
101  else if (s == "mongodb")
102  {
103  ARMARX_IMPORTANT << "Using persistence strategy=" << s;
104  ARMARX_WARNING << "Persistence strategy=" << s << " not implemented";
105  }
106  else
107  {
108  ARMARX_WARNING << "Persistence strategy=" << s << " unknown";
109  }
110  }
111 
112  setPersistenceStrategy(redundantPersistence);
113  }
114 
115  Memory::Memory() : Memory("MemoryExport", "Test")
116  {
117  }
118 
119  Memory::Memory(const std::string& exportName, const std::string& memoryName) :
120  MemoryBase(exportName, MemoryID(memoryName, "")),
123  persistenceStrategy_(std::make_shared<persistence::RedundantPersistenceStrategy>())
124  {
125  }
126 
128  const std::string& exportName,
129  const std::string& memoryName,
130  const std::shared_ptr<persistence::RedundantPersistenceStrategy>& persistenceStrategy) :
131  MemoryBase(exportName, MemoryID(memoryName, "")),
134  persistenceStrategy_(persistenceStrategy)
135  {
136  }
137 
138  void
139  Memory::_setExportName(const std::string& memoryName)
140  {
141  ARMARX_TRACE;
142 
143  if (persistenceStrategy_)
144  {
145  persistenceStrategy_->setExportName(memoryName);
146  }
147  }
148 
149  void
151  {
152  ARMARX_TRACE;
153 
155  }
156 
157  void
159  {
160  ARMARX_TRACE;
161 
163  ARMARX_IMPORTANT << "Storing of data finished, starting to generate and save statistics...";
165  }
166 
167  void
169  {
170  std::lock_guard l(ltm_mutex);
171 
172  ARMARX_TRACE;
173 
174  ARMARX_DEBUG << "Setting memory=" << memoryId.memoryName
175  << ", id=" << memoryId.cleanID().str();
176 
179  }
180 
181  bool
182  Memory::forEachCoreSegment(std::function<void(CoreSegment&)> func) const
183  {
184  std::lock_guard l(ltm_mutex);
185 
186  ARMARX_TRACE;
187 
188  ARMARX_DEBUG << "For each core segment (mem id=" << id().cleanID().str() << ")";
189 
190 
191  for (auto& core_segment : persistenceStrategy_->getContainerKeys(id()))
192  {
193  ARMARX_DEBUG << "Found core segment=" << core_segment;
194 
195  std::shared_ptr<persistence::MemoryPersistenceStrategy> coreSegmentPersistenceStrategy(
196  persistenceStrategy_);
197 
199  id().withCoreSegmentName(core_segment),
200  processors,
201  coreSegmentPersistenceStrategy);
202  func(c);
203  }
204 
205 
206  return true;
207  }
208 
209  bool
210  Memory::hasCoreSegment(const std::string& coreSegmentName) const
211  {
212  std::lock_guard l(ltm_mutex);
213 
214  ARMARX_TRACE;
215 
216  bool foundCoreSegment = cacheHasCoreSegment(coreSegmentName) ||
217  persistenceStrategy_->containsContainer(id(), coreSegmentName);
218 
219  return foundCoreSegment;
220  }
221 
222  std::shared_ptr<CoreSegment>
223  Memory::findCoreSegment(const std::string& coreSegmentName) const
224  {
225  std::lock_guard l(ltm_mutex);
226 
227  ARMARX_TRACE;
228 
229  if (!hasCoreSegment(coreSegmentName))
230  {
231  return nullptr;
232  }
233 
234  std::shared_ptr<persistence::MemoryPersistenceStrategy> coreSegmentPersistenceStrategy(
235  persistenceStrategy_);
236 
237  return std::make_shared<CoreSegment>(getExportName(),
238  id().withCoreSegmentName(coreSegmentName),
239  processors,
240  coreSegmentPersistenceStrategy);
241  }
242 
243  void
245  {
246  ARMARX_TRACE;
247 
250  }
251 
252  void
254  {
255  ARMARX_TRACE;
256  std::lock_guard l(ltm_mutex);
257 
258  wmMemory.id() = id().getMemoryID().cleanID();
259 
260  ARMARX_DEBUG << "Memory: Load all references (id=" << wmMemory.id().cleanID().str() << ")";
261 
263  [&wmMemory](auto& ltmCoreSegment)
264  {
265  armem::wm::CoreSegment wmCoreSegment;
266  ltmCoreSegment.loadAllReferences(wmCoreSegment);
267 
268  // Because there might be multiple LTMs providers with the same provider segment
269  if (wmMemory.hasCoreSegment(wmCoreSegment.name()))
270  {
271  armem::wm::CoreSegment existingWmCoreSegment =
272  wmMemory.getCoreSegment(wmCoreSegment.name());
273  existingWmCoreSegment.append(wmCoreSegment);
274  }
275  else
276  {
277  wmMemory.addCoreSegment(wmCoreSegment);
278  }
279  });
280  }
281 
282  void
284  {
285  ARMARX_TRACE;
286  std::lock_guard l(ltm_mutex);
287  wmMemory.id() = id().getMemoryID().cleanID();
288 
289  ARMARX_DEBUG << "Memory: Load latest N references for all core segments (id="
290  << wmMemory.id().cleanID().str() << ")";
291 
293  [&wmMemory, &n](auto& ltmCoreSegment)
294  {
295  armem::wm::CoreSegment wmCoreSegment;
296  ltmCoreSegment.loadLatestNReferences(n, wmCoreSegment);
297 
298  // Because there might be multiple LTMs providers with the same provider segment
299  if (wmMemory.hasCoreSegment(wmCoreSegment.name()))
300  {
301  armem::wm::CoreSegment existingWmCoreSegment =
302  wmMemory.getCoreSegment(wmCoreSegment.name());
303  existingWmCoreSegment.append(wmCoreSegment);
304  }
305  else
306  {
307  wmMemory.addCoreSegment(wmCoreSegment);
308  }
309  });
310  }
311 
312  void
314  armem::wm::Memory& wmMemory,
315  std::list<std::string> coreSegNames)
316  {
317  ARMARX_TRACE;
318  std::lock_guard l(ltm_mutex);
319  wmMemory.id() = id().getMemoryID().cleanID();
320 
321  ARMARX_DEBUG << "Memory: Load latest references for set of core segments (id="
322  << wmMemory.id().cleanID().str() << ")";
323 
325  [&wmMemory, &n, &coreSegNames](auto& ltmCoreSegment)
326  {
327  bool loadCoreSeg =
328  (std::find(coreSegNames.begin(),
329  coreSegNames.end(),
330  ltmCoreSegment.id().coreSegmentName) != coreSegNames.end());
331  if (loadCoreSeg)
332  {
333  ARMARX_DEBUG << "Load core segment=" << ltmCoreSegment.id().coreSegmentName;
334  armem::wm::CoreSegment wmCoreSegment;
335  ltmCoreSegment.loadLatestNReferences(n, wmCoreSegment);
336 
337  // Because there might be multiple LTMs providers with the same provider segment
338  if (wmMemory.hasCoreSegment(wmCoreSegment.name()))
339  {
340  armem::wm::CoreSegment existingWmCoreSegment =
341  wmMemory.getCoreSegment(wmCoreSegment.name());
342  existingWmCoreSegment.append(wmCoreSegment);
343  }
344  else
345  {
346  wmMemory.addCoreSegment(wmCoreSegment);
347  }
348  }
349  else
350  {
351  ARMARX_DEBUG << "Skipping loading CoreSegment with name "
352  << wmMemory.id().coreSegmentName
353  << " from LTM into WM as it is not in the defined list";
354  }
355  });
356  }
357 
358  void
360  {
361  ARMARX_TRACE;
362  std::lock_guard l(ltm_mutex); // we cannot load a memory multiple times simultaneously
363 
364  ARMARX_DEBUG << "Resolve memory id=" << id().cleanID().str();
365 
366  wmMemory.forEachCoreSegment(
367  [&](auto& wmCoreSegment)
368  {
369  std::shared_ptr<persistence::MemoryPersistenceStrategy>
370  coreSegmentPersistenceStrategy(persistenceStrategy_);
371 
372  CoreSegment ltmCoreSegment(
373  getExportName(),
374  id().withCoreSegmentName(wmCoreSegment.id().coreSegmentName),
375  processors,
376  coreSegmentPersistenceStrategy);
377 
378  ltmCoreSegment.resolve(wmCoreSegment);
379  });
380  }
381 
382  void
384  {
385  ARMARX_TRACE;
386  BufferedBase::addToBuffer(wmMemory);
387  }
388 
389  void
390  Memory::_directlyStore(const armem::wm::Memory& wmMemory, bool simulatedVersion)
391  {
392  ARMARX_TRACE;
393  std::lock_guard l(ltm_mutex); // we cannot store a memory multiple times simultaneously
394 
395  if (id().memoryName.empty())
396  {
398  << "During storage of memory '" << wmMemory.id().str()
399  << "' I noticed that the corresponding LTM has no id set. "
400  << "I set the id of the LTM to the same name, however this should not happen!";
401  setMemoryID(wmMemory.id());
402  }
403 
404  ARMARX_DEBUG << "Directly store memory id=" << id().cleanID().str();
405  ARMARX_DEBUG << "CoreSegments: " << wmMemory.getCoreSegmentNames().size();
406 
407  wmMemory.forEachCoreSegment(
408  [&](const auto& wmCoreSegment)
409  {
410  std::shared_ptr<persistence::MemoryPersistenceStrategy>
411  coreSegmentPersistenceStrategy(persistenceStrategy_);
412 
413  CoreSegment ltmCoreSegment(
414  getExportName(),
415  id().withCoreSegmentName(wmCoreSegment.id().coreSegmentName),
416  processors,
417  coreSegmentPersistenceStrategy);
418 
419  // 2. store data
420  ltmCoreSegment.store(wmCoreSegment, simulatedVersion);
421 
422 
423  // 3. update statistics
424  statistics.recordedCoreSegments++;
425  });
426 
427  // 4. update cache
428  //CachedBase::addToCache(memory);
429  }
430 
431  void
433  {
434  //not used any more
435  }
436 
437  void
439  {
440  ARMARX_TRACE;
441  auto firstTimeStarted = this->statistics.firstStarted;
442  if (!firstTimeStarted.isValid())
443  {
444  //No statistics to be saved, as recording was never started
445  ARMARX_DEBUG << "No Statistics will be saved because firstStarted is invalid: "
446  << VAROUT(this->statistics.firstStarted);
447  return;
448  }
449 
450  ARMARX_DEBUG << "Preparing to save statistics for " << this->name();
451  try
452  {
453  auto first_stats = this->getFilterStatistics();
454  if (first_stats.empty())
455  {
456  //empty statistics mean no data was recorded and no statistics should be saved
457  ARMARX_DEBUG << "No Statistics will be saved because no actual data was recorded.";
458  return;
459  }
460  std::map<std::string,
461  std::map<std::string, ltm::processor::SnapshotFilter::FilterStatistics>>
462  information;
463  std::map<std::string, armarx::core::time::DateTime> times;
464 
465  try
466  {
467  times["Started LTM1"] = this->getStatistics().lastStarted;
468  times["Stopped LTM1"] = this->getStatistics().lastStopped;
469  information["LTM"] = first_stats;
470  }
471  catch (...)
472  {
473  ARMARX_DEBUG << "Something went wrong after getting the statistics";
474  }
475  // auto exportPath = this->getMemoryBasePath();
476  auto exportName = this->getExportName();
477  auto recording_started = this->getStatistics().lastStarted;
478  auto recording_stopped = this->getStatistics().lastStopped;
479  // test::save_statistics(information,
480  // times,
481  // recording_started,
482  // recording_stopped,
483  // exportPath,
484  // exportName,
485  // this->name());
486  }
487  catch (...)
488  {
489  ARMARX_DEBUG << "Something went wrong with the statistics saving process";
490  }
491  }
492 
493  std::vector<std::string>
494  Memory::split(std::string str, char delimiter)
495  {
496  ARMARX_TRACE;
497  // Using str in a string stream
498  std::stringstream ss(str);
499  std::vector<std::string> res;
500  std::string token;
501  while (std::getline(ss, token, delimiter))
502  {
503  res.push_back(token);
504  }
505  return res;
506  }
507 } // namespace armarx::armem::server::ltm
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::getStatistics
Statistics getStatistics() const
Definition: MemoryBase.h:333
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::stop
void stop()
Definition: BufferedMemoryMixin.h:82
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::setMixinMemoryID
void setMixinMemoryID(const MemoryID &id)
Definition: BufferedMemoryMixin.h:58
RestPersistence.h
armarx::armem::base::CoreSegmentBase::name
std::string & name()
Definition: CoreSegmentBase.h:103
str
std::string str(const T &t)
Definition: UserAssistedSegmenterGuiWidgetController.cpp:43
armarx::armem::server::ltm::detail::mixin::CachedMemoryMixin< CoreSegment >::setMixinMemoryID
void setMixinMemoryID(const MemoryID &id)
Definition: CachedMemoryMixin.h:35
armarx::armem::server::ltm::Memory::hasCoreSegment
bool hasCoreSegment(const std::string &coreSegmentName) const final
check if core segment exists
Definition: Memory.cpp:210
armarx::armem::server::ltm::detail::MemoryItem::getMemoryID
MemoryID getMemoryID() const
Definition: MemoryItem.h:33
armarx::armem::server::ltm::detail::MemoryItem::processors
std::shared_ptr< Processors > processors
Definition: MemoryItem.h:54
ARMARX_IMPORTANT
#define ARMARX_IMPORTANT
Definition: Logging.h:190
armarx::armem::server::ltm::Memory::findCoreSegment
std::shared_ptr< CoreSegment > findCoreSegment(const std::string &coreSegmentName) const final
find core segment
Definition: Memory.cpp:223
MemoryPersistenceStrategy.h
armarx::armem::server::ltm::Memory::Memory
Memory()
Definition: Memory.cpp:115
armarx::armem::server::ltm::Memory::getAndSaveStatistics
void getAndSaveStatistics()
getAndSaveStatistics generates and saves statistics for a LTM recording
Definition: Memory.cpp:438
armarx::armem::base::MemoryBase::getCoreSegmentNames
std::vector< std::string > getCoreSegmentNames() const
Definition: MemoryBase.h:238
armarx::armem::server::ltm::Memory::_loadAllReferences
void _loadAllReferences(armem::wm::Memory &wmMemory) final
Definition: Memory.cpp:253
MemoryID.h
armarx::armem::base::MemoryBase::getCoreSegment
CoreSegmentT & getCoreSegment(const std::string &name)
Definition: MemoryBase.h:132
armarx::armem::server::ltm::Memory::createPropertyDefinitions
void createPropertyDefinitions(PropertyDefinitionsPtr &defs, const std::string &prefix) override
default parameters. Implementation should use the configuration to configure
Definition: Memory.cpp:244
armarx::armem::MemoryID::str
std::string str(bool escapeDelimiters=true) const
Get a string representation of this memory ID.
Definition: MemoryID.cpp:102
armarx::armem::server::ltm::Memory::setPersistenceStrategy
void setPersistenceStrategy(std::shared_ptr< persistence::RedundantPersistenceStrategy > persistenceStrategy)
Definition: Memory.h:59
armarx::armem::server::ltm::Memory::_resolve
void _resolve(armem::wm::Memory &wmMemory) final
Definition: Memory.cpp:359
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
armarx::armem::server::ltm::Memory::_disable
void _disable() final
Definition: Memory.cpp:158
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::p
struct armarx::armem::server::ltm::detail::MemoryBase::Properties p
RedundantPersistenceStrategy.h
armarx::armem::server::ltm::detail::CoreSegmentBase::resolve
void resolve(armem::wm::CoreSegment &coreSeg)
convert the references of the input into a wm::Memory
Definition: CoreSegmentBase.h:46
magic_enum::detail::n
constexpr auto n() noexcept
Definition: magic_enum.hpp:418
armarx::armem::MemoryID::coreSegmentName
std::string coreSegmentName
Definition: MemoryID.h:51
armarx::armem::server::ltm::Memory::_configure
void _configure(const nlohmann::json &config) final
configuration
Definition: Memory.cpp:18
armarx::armem::server::ltm::detail::MemoryBase::Properties::export_path
std::string export_path
Definition: MemoryBase.h:418
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::statistics
Statistics statistics
Definition: MemoryBase.h:445
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >
armarx::armem::server::ltm::Memory::_loadOnStartup
void _loadOnStartup() final
Definition: Memory.cpp:432
armarx::armem::server::ltm::Memory::_loadLatestNReferences
void _loadLatestNReferences(int n, armem::wm::Memory &wmMemory) final
Definition: Memory.cpp:283
armarx::armem::base::MemoryBase::forEachCoreSegment
bool forEachCoreSegment(CoreSegmentFunctionT &&func)
Definition: MemoryBase.h:186
armarx::armem::server::ltm::Memory::_store
void _store(const armem::wm::Memory &wmMemory) final
Definition: Memory.cpp:383
armarx::armem::server::ltm::Memory
A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mong...
Definition: Memory.h:20
memory_definitions.h
armarx::armem::base::MemoryBase::hasCoreSegment
bool hasCoreSegment(const std::string &name) const
Definition: MemoryBase.h:105
armarx::make_shared
auto make_shared(Args &&... args)
Definition: ManagedIceObject.h:92
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::addToBuffer
void addToBuffer(const armem::wm::Memory &memory)
Definition: BufferedMemoryMixin.h:144
ARMARX_TRACE
#define ARMARX_TRACE
Definition: trace.h:77
armarx::armem::base::CoreSegmentBase::append
void append(const OtherDerivedT &other)
Definition: CoreSegmentBase.h:307
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::server::ltm::detail::MemoryItem::setMemoryID
void setMemoryID(const MemoryID &)
Definition: MemoryItem.cpp:30
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::start
void start()
Definition: BufferedMemoryMixin.h:67
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::ltm_mutex
std::recursive_mutex ltm_mutex
Definition: MemoryBase.h:443
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:184
armarx::armem::wm::CoreSegment
Client-side working memory core segment.
Definition: memory_definitions.h:119
armarx::armem::server::ltm::detail::mixin::CachedMemoryMixin< CoreSegment >::configureMixin
void configureMixin(const nlohmann::json &json)
configuration
Definition: CachedMemoryMixin.h:29
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
armarx::armem::server::ltm::detail::MemoryBase::Properties::persistenceStrategies
std::string persistenceStrategies
Definition: MemoryBase.h:432
armarx::armem::base::MemoryBase::addCoreSegment
CoreSegmentT & addCoreSegment(const std::string &name, aron::type::ObjectPtr coreSegmentType=nullptr, const std::vector< PredictionEngine > &predictionEngines={})
Add an empty core segment with the given name, type and prediction engines.
Definition: MemoryBase.h:259
armarx::armem::server::ltm::Memory::forEachCoreSegment
bool forEachCoreSegment(std::function< void(CoreSegment &)> func) const final
iterate over all core segments of this ltm
Definition: Memory.cpp:182
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::createPropertyDefinitions
virtual void createPropertyDefinitions(PropertyDefinitionsPtr &defs, const std::string &prefix)
default parameters. Implementation should use the configuration to configure
Definition: MemoryBase.h:278
armarx::armem::server::ltm::detail::MemoryBase::Properties::persistenceStrategyIdentifier
std::string persistenceStrategyIdentifier
Definition: MemoryBase.h:433
armarx::armem::server::ltm::detail::MemoryItem::getExportName
virtual std::string getExportName() const
Definition: MemoryItem.h:27
armarx::armem::server::ltm::detail::MemoryBase< CoreSegment >::getFilterStatistics
std::map< std::string, processor::SnapshotFilter::FilterStatistics > getFilterStatistics()
Definition: MemoryBase.h:339
armarx::armem::base::detail::MemoryItem::id
MemoryID & id()
Definition: MemoryItem.h:25
armarx::armem::MemoryID::memoryName
std::string memoryName
Definition: MemoryID.h:50
armarx::armem::server::ltm::Memory::_setMemoryID
void _setMemoryID(const MemoryID &memoryId) final
Definition: Memory.cpp:168
armarx::armem::server::ltm::detail::mixin::CachedMemoryMixin< CoreSegment >
armarx::armem::server::ltm::detail::MemoryBase::Properties::minDiskSpace
int minDiskSpace
Definition: MemoryBase.h:420
armarx::armem::server::ltm
Definition: forward_declarations.h:20
Memory.h
armarx::armem::server::ltm::Memory::_enable
void _enable() final
Definition: Memory.cpp:150
armarx::armem::server::ltm::Memory::_directlyStore
void _directlyStore(const armem::wm::Memory &wmMemory, bool simulatedVersion) final
Definition: Memory.cpp:390
armarx::armem::server::ltm::detail::MemoryItem::id
MemoryID id() const
Definition: MemoryItem.cpp:37
armarx::armem::MemoryID::cleanID
MemoryID cleanID() const
Definition: MemoryID.cpp:133
armarx::armem::MemoryID::getMemoryID
MemoryID getMemoryID() const
Definition: MemoryID.cpp:286
TimeUtil.h
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::configureMixin
void configureMixin(const nlohmann::json &json)
configuration
Definition: BufferedMemoryMixin.h:124
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
armarx::armem::server::ltm::CoreSegment
Definition: CoreSegment.h:13
std
Definition: Application.h:66
VAROUT
#define VAROUT(x)
Definition: StringHelpers.h:198
magic_enum::detail::find
constexpr std::size_t find(string_view str, char_type c) noexcept
Definition: magic_enum.hpp:309
armarx::armem::laser_scans::constants::memoryName
const std::string memoryName
Definition: constants.h:28
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >
armarx::armem::server::ltm::detail::mixin::CachedMemoryMixin< CoreSegment >::cacheHasCoreSegment
bool cacheHasCoreSegment(const std::string &n) const
Definition: CachedMemoryMixin.h:50
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin< CoreSegment >::createPropertyDefinitions
void createPropertyDefinitions(PropertyDefinitionsPtr &defs, const std::string &prefix)
Definition: BufferedMemoryMixin.h:135
DiskPersistence.h
Logging.h
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
armarx::armem::server::ltm::detail::CoreSegmentBase::store
void store(const armem::wm::CoreSegment &coreSeg, bool simulatedVersion)
encode the content of a wm::Memory and store
Definition: CoreSegmentBase.h:53
armarx::ctrlutil::s
double s(double t, double s0, double v0, double a0, double j)
Definition: CtrlUtil.h:33
identifiers
const std::list< std::string > identifiers
Definition: linux_networkload.cpp:22
armarx::armem::server::ltm::Memory::_setExportName
void _setExportName(const std::string &memoryName) final
Definition: Memory.cpp:139
armarx::armem::server::ltm::detail::MemoryItem::name
std::string name() const
Definition: MemoryItem.cpp:43