MemoryBase.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 #include <list>
5 
6 
7 // BaseClass
8 #include "MemoryItem.h"
9 
10 // ChildType
11 
12 // ArmarX
15 #include <ArmarXCore/core/time.h>
16 #include <ArmarXCore/interface/core/UserException.h>
17 
22 #include <RobotAPI/libraries/armem/server/test/ForgettingExperiments.h>
24 
26 {
27  enum class RecordingMode
28  {
29  CONSOLIDATE_REMOVED, // only store whats removed from the WM
30  CONSOLIDATE_ALL, // store whats in the WM (on commit)
31  CONSOLIDATE_LATEST // store the latest snapshots at a fixed frequency (for now 1Hz)
32  };
33 } // namespace armarx::armem::server::ltm
34 
36 {
37  /// @brief Interface functions for the longterm memory classes
38  template <class _CoreSegmentT>
39  class MemoryBase : public MemoryItem
40  {
41  public:
42  struct Statistics
43  {
46  bool firstStart = true;
47  bool firstStop = true;
52  };
53 
54  public:
55  using CoreSegmentT = _CoreSegmentT;
56 
57  MemoryBase(const std::string& exportName, const MemoryID& id) :
58  MemoryItem(exportName, id), enabled(false)
59  {
60  }
61 
62  void
63  setRecordingMode(const std::string& m)
64  {
65  if (m == "CONSOLIDATE_REMOVED")
66  {
68  }
69  else if (m == "CONSOLIDATE_ALL")
70  {
72  }
73  else if (m == "CONSOLIDATE_LATEST")
74  {
76  }
77  else
78  {
79  ARMARX_WARNING << "Unknown recording mode: " << m;
80  }
81  }
82 
83  void
85  {
86  this->recordingMode = m;
87  }
88 
91  {
92  return recordingMode;
93  }
94 
95  /// initialize config
96  void
98  {
99  bool en = p.enabled_on_startup;
103 
104  this->setExportName(p.export_name);
106 
107  try
108  {
109  const auto json = nlohmann::json::parse(p.configuration_on_startup);
110 
111  // Processors are shared. So we only need to configure the root
112  processors->configure(json);
113 
114  this->_configure(json);
115  }
116  catch (...)
117  {
118  ARMARX_WARNING << "Failed to parse `" << p.configuration_on_startup << "`";
119  en = false;
120  }
121 
122  if (en)
123  {
124  this->startRecording();
125  }
126  }
127 
128  /// enable this LTM
129  void
131  {
132  processors->resetFilterStatisticsForNewEpisode(); //make sure the statistics are
133  //resetted before the recording starts
135  ARMARX_INFO << "Enabling LTM " << id().str() << " at " << now.toDateTimeString();
136  ARMARX_INFO << "Storing information at " << this->getExportName();
137  enabled = true;
139  {
140  statistics.firstStarted = now;
141  statistics.firstStart = false;
142  }
143  statistics.lastStarted = now;
144  this->_enable();
145  }
146 
147  /// disable this LTM
148  void
150  {
152  ARMARX_INFO << "Disabling LTM " << id().str() << " at " << now.toDateTimeString();
153  enabled = false;
154  if (statistics.firstStop)
155  {
156  statistics.firstStopped = now;
157  statistics.firstStop = false;
158  }
159  statistics.lastStopped = now;
160  this->_disable();
161  ARMARX_INFO << "Disabling of LTM finished";
162  }
163 
164  /// return the full ltm as a wm::Memory with only references
165  /// the ltm may be huge, use with caution
168  {
171  return ret;
172  }
173 
174  void
176  {
177  TIMING_START(LTM_Memory_LoadAll);
179  TIMING_END_STREAM(LTM_Memory_LoadAll, ARMARX_DEBUG);
180  }
181 
182  //return the newest part of the ltm as a wm::Memory with only references
183  //will return the newest n snapshots of each entity
186  {
189  return ret;
190  }
191 
192  //return the newest part of the ltm as a wm::Memory with only references
193  //will return the newest n snapshots of each entity for only the CoreSegments matching one of the name sin the list
194  void
195  loadLatestNReferences(int n, armem::wm::Memory& memory, std::list<std::string> coreSegNames)
196  {
197  TIMING_START(LTM_Memory_loadNewestn_someCoreSegs);
198  _loadLatestNReferences(n, memory, coreSegNames);
199  TIMING_END_STREAM(LTM_Memory_loadNewestn_someCoreSegs, ARMARX_DEBUG);
200  }
201 
202  void
204  {
205  TIMING_START(LTM_Memory_loadNewestn);
207  TIMING_END_STREAM(LTM_Memory_loadNewestn, ARMARX_DEBUG);
208  }
209 
210  /// return the full ltm as a wm::Memory and resolves the references
211  /// the ltm may be huge, use with caution
214  {
217  return ret;
218  }
219 
220  void
222  {
223  TIMING_START(LTM_Memory_LoadAllAndResolve);
225  _resolve(memory);
226  TIMING_END_STREAM(LTM_Memory_LoadAllAndResolve, ARMARX_DEBUG);
227  }
228 
229  /// convert the references of the input into a wm::Memory
230  void
232  {
233  TIMING_START(LTM_Memory_Load);
234  _resolve(memory);
235  TIMING_END_STREAM(LTM_Memory_Load, ARMARX_DEBUG);
236  }
237 
238  /// append a wm::Memory instance to the ltm
239  void
241  {
242  TIMING_START(LTM_Memory_Append);
243 
244  for (auto& f : processors->memFilters)
245  {
246  if (!f->accept(memory))
247  {
249  << deactivateSpam(60)
250  << "Ignoring to put a Memory into the LTM because it got filtered.";
251  return;
252  }
253  }
255  TIMING_END_STREAM(LTM_Memory_Append, ARMARX_DEBUG);
256  }
257 
258  /// append a wm::Memory instance to the ltm
259  void
260  store(const armem::server::wm::Memory& serverMemory)
261  {
262  armem::wm::Memory memory(serverMemory.name());
263  memory.update(armem::toCommit(serverMemory), true, false);
264  this->store(memory);
265  }
266 
267  /// iterate over all core segments of this ltm
268  virtual bool forEachCoreSegment(std::function<void(CoreSegmentT&)> func) const = 0;
269 
270  /// check if core segment exists
271  virtual bool hasCoreSegment(const std::string&) const = 0;
272 
273  /// find core segment
274  virtual std::shared_ptr<CoreSegmentT> findCoreSegment(const std::string&) const = 0;
275 
276  /// default parameters. Implementation should use the configuration to configure
277  virtual void
278  createPropertyDefinitions(PropertyDefinitionsPtr& defs, const std::string& prefix)
279  {
280  defs->optional(p.enabled_on_startup, prefix + "enabled");
281  defs->optional(p.recordingMode, prefix + "recordingMode");
282  defs->optional(p.configuration_on_startup, prefix + "configuration");
283  defs->optional(p.export_name, prefix + "exportName");
284  defs->optional(p.storeOnStop, prefix + "storeOnStop");
285  defs->optional(p.export_path, prefix + "exportPath");
286 
287  defs->optional(p.importOnStartUp, prefix + "importOnStartUp");
288  defs->optional(p.maxAmountOfSnapshotsLoaded, prefix + "maxAmountSnapshotsLoaded");
289  defs->optional(p.coreSegmentsToLoad, prefix + "loadedCoreSegments");
290 
291  defs->optional(p.persistenceStrategyIdentifier,
292  prefix + "persistenceStrategyIdentifier");
293  defs->optional(p.persistenceStrategies, prefix + "persistenceStrategies");
294  defs->optional(p.restHost, prefix + "rest.host");
295  defs->optional(p.restPort, prefix + "rest.port");
296  defs->optional(p.restDisableIfNotAvailable, prefix + "rest.disableIfNotAvailable");
297 
298  defs->optional(p.minDiskSpace, prefix + "minDiskSpace");
299  }
300 
301  /// enable/disable
302  void
304  {
306 
307  enable();
308  }
309 
310  void
312  {
313 
314  disable();
315  }
316 
317  bool
318  isRecording() const
319  {
320  return enabled;
321  }
322 
323  /// statistics
324  virtual void
326  {
327  // enabled stays the same
330  }
331 
332  Statistics
334  {
335  return statistics;
336  }
337 
338  std::map<std::string, processor::SnapshotFilter::FilterStatistics>
340  {
341  try
342  {
343  ARMARX_INFO << "Trying to save statistics";
344  auto stats = processors->getSnapshotFilterStatistics();
345  return stats;
346  }
347  catch (InvalidArgumentException& e)
348  { //no data was actually recorded
349  ARMARX_INFO << e.what();
350  }
351  catch (...)
352  {
353  ARMARX_WARNING << "Saving statistics did not work";
354  }
355  std::map<std::string, processor::SnapshotFilter::FilterStatistics> emptyStatistics;
356  return emptyStatistics;
357  }
358 
359  /// get level name1
360  static std::string
362  {
363  return "LT-Memory";
364  }
365 
366  void
368  {
369  _loadOnStartup();
370  }
371 
372 
373  protected:
374  /// configuration
375  virtual void
376  _configure(const nlohmann::json&)
377  {
378  }
379 
380  virtual void
382  {
383  }
384 
385  virtual void
387  {
388  }
389 
390  virtual void
391  _setExportName(const std::string&)
392  {
393  }
394 
395  virtual void _loadAllReferences(armem::wm::Memory& memory) = 0;
396  virtual void _resolve(armem::wm::Memory& memory) = 0;
397  virtual void _store(const armem::wm::Memory& memory) = 0;
398  virtual void _directlyStore(const armem::wm::Memory& memory,
399  bool simulatedVersion = false) = 0;
400  virtual void _loadOnStartup() = 0;
401  virtual void _loadLatestNReferences(int n, armem::wm::Memory& memory) = 0;
402  virtual void _loadLatestNReferences(int n,
404  std::list<std::string> coreSegNames) = 0;
405 
406  public:
407  // stuff for scenario parameters
408  struct Properties
409  {
410  // whether the LTM is enabled on startup
411  bool enabled_on_startup = false;
412 
413  // How data is stored, if the LTM is enabled
414  std::string recordingMode = "CONSOLIDATE_REMOVED";
415 
416  // Name and export path (TODO: Should this be part of the base class? Export path is a disk memory thing)
417  std::string export_name = "MemoryExport";
418  std::string export_path = "/tmp/ltm";
419  bool storeOnStop = false;
420  int minDiskSpace = 50; //GB
421 
422  // TODO: belong more to WM, but no good solution for that currently:
423  bool importOnStartUp = false;
425  std::string coreSegmentsToLoad = "";
426 
427  // Other configuration
429  "{ \"SnapshotFrequencyFilter\": "
430  "{\"WaitingTimeInMsForFilter\" : 50}}"; //record with 20 fps as standard
431 
432  std::string persistenceStrategies = "disk";
433  std::string persistenceStrategyIdentifier = "localDisk";
434  std::string restHost = "localhost";
435  int restPort = 8080;
437 
439 
440  } p;
441 
442  protected:
443  mutable std::recursive_mutex ltm_mutex;
444 
445  mutable Statistics statistics;
446 
447  std::atomic_bool enabled = true;
448 
450  };
451 } // namespace armarx::armem::server::ltm::detail
armarx::armem::server::ltm::detail::MemoryBase::isRecording
bool isRecording() const
Definition: MemoryBase.h:318
armarx::armem::server::ltm::detail::MemoryBase::_disable
virtual void _disable()
Definition: MemoryBase.h:386
armarx::armem::server::ltm::detail::MemoryBase::getStatistics
Statistics getStatistics() const
Definition: MemoryBase.h:333
armarx::armem::server::ltm::detail::MemoryBase::Statistics
Definition: MemoryBase.h:42
TIMING_START
#define TIMING_START(name)
Definition: TimeUtil.h:289
armarx::armem::server::ltm::detail
Definition: CoreSegmentBase.cpp:3
armarx::armem::server::ltm::detail::MemoryBase::_resolve
virtual void _resolve(armem::wm::Memory &memory)=0
armarx::armem::server::ltm::detail::MemoryBase::Statistics::firstStopped
armarx::core::time::DateTime firstStopped
Definition: MemoryBase.h:49
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
armarx::armem::server::ltm::detail::MemoryBase::recordingMode
RecordingMode recordingMode
Definition: MemoryBase.h:449
armarx::armem::server::ltm::detail::MemoryItem::processors
std::shared_ptr< Processors > processors
Definition: MemoryItem.h:54
armarx::armem::server::ltm::detail::MemoryBase::loadLatestNReferences
void loadLatestNReferences(int n, armem::wm::Memory &memory)
Definition: MemoryBase.h:203
armarx::armem::server::ltm::detail::MemoryBase::findCoreSegment
virtual std::shared_ptr< CoreSegmentT > findCoreSegment(const std::string &) const =0
find core segment
armarx::armem::server::ltm::detail::MemoryBase::Properties::overwriteIdentifierOnLtmLoad
bool overwriteIdentifierOnLtmLoad
Definition: MemoryBase.h:438
armarx::armem::server::ltm::detail::MemoryBase::disable
void disable()
disable this LTM
Definition: MemoryBase.h:149
armarx::armem::server::ltm::detail::MemoryBase::Statistics::lastStarted
armarx::core::time::DateTime lastStarted
Definition: MemoryBase.h:50
armarx::armem::server::ltm::detail::MemoryBase::getRecordingMode
RecordingMode getRecordingMode() const
Definition: MemoryBase.h:90
armarx::core::time::DateTime::Now
static DateTime Now()
Definition: DateTime.cpp:51
armarx::armem::server::ltm::detail::MemoryBase::Properties::coreSegmentsToLoad
std::string coreSegmentsToLoad
Definition: MemoryBase.h:425
MemoryID.h
armarx::armem::server::ltm::detail::MemoryBase::_loadAllReferences
virtual void _loadAllReferences(armem::wm::Memory &memory)=0
armarx::armem::server::ltm::detail::MemoryBase::Properties::restHost
std::string restHost
Definition: MemoryBase.h:434
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::detail::MemoryBase::Statistics::firstStart
bool firstStart
Definition: MemoryBase.h:46
armarx::armem::server::ltm::detail::MemoryBase::Statistics::firstStarted
armarx::core::time::DateTime firstStarted
Definition: MemoryBase.h:48
armarx::armem::server::ltm::detail::MemoryBase::Properties::importOnStartUp
bool importOnStartUp
Definition: MemoryBase.h:423
armarx::armem::server::ltm::detail::MemoryBase::CoreSegmentT
_CoreSegmentT CoreSegmentT
Definition: MemoryBase.h:55
armarx::armem::base::MemoryBase::name
std::string & name()
Definition: MemoryBase.h:94
armarx::armem::server::ltm::detail::MemoryBase::p
struct armarx::armem::server::ltm::detail::MemoryBase::Properties p
armarx::armem::server::ltm::detail::MemoryBase::Properties
Definition: MemoryBase.h:408
aron_conversions.h
magic_enum::detail::n
constexpr auto n() noexcept
Definition: magic_enum.hpp:418
armarx::armem::server::ltm::detail::MemoryBase::enabled
std::atomic_bool enabled
Definition: MemoryBase.h:447
armarx::armem::server::ltm::detail::MemoryBase::Properties::configuration_on_startup
std::string configuration_on_startup
Definition: MemoryBase.h:428
armarx::armem::server::ltm::detail::MemoryBase::getLevelName
static std::string getLevelName()
get level name1
Definition: MemoryBase.h:361
armarx::memory
Brief description of class memory.
Definition: memory.h:38
armarx::armem::server::ltm::detail::MemoryBase::MemoryBase
MemoryBase(const std::string &exportName, const MemoryID &id)
Definition: MemoryBase.h:57
armarx::armem::server::ltm::detail::MemoryBase::Statistics::recordedCoreSegments
long recordedCoreSegments
Definition: MemoryBase.h:45
TIMING_END_STREAM
#define TIMING_END_STREAM(name, os)
Definition: TimeUtil.h:310
armarx::armem::server::ltm::detail::MemoryBase::Properties::export_path
std::string export_path
Definition: MemoryBase.h:418
armarx::armem::server::ltm::detail::MemoryBase::statistics
Statistics statistics
Definition: MemoryBase.h:445
armarx::armem::server::ltm::detail::MemoryBase
Interface functions for the longterm memory classes.
Definition: MemoryBase.h:39
armarx::armem::server::ltm::detail::MemoryBase::hasCoreSegment
virtual bool hasCoreSegment(const std::string &) const =0
check if core segment exists
armarx::armem::server::ltm::detail::MemoryBase::enable
void enable()
enable this LTM
Definition: MemoryBase.h:130
armarx::armem::server::ltm::detail::MemoryBase::_enable
virtual void _enable()
Definition: MemoryBase.h:381
memory_definitions.h
deactivateSpam
SpamFilterDataPtr deactivateSpam(SpamFilterDataPtr const &spamFilter, float deactivationDurationSec, const std::string &identifier, bool deactivate)
Definition: Logging.cpp:75
armarx::armem::server::wm::Memory
Definition: memory_definitions.h:122
armarx::armem::server::ltm::detail::MemoryBase::resolve
void resolve(armem::wm::Memory &memory)
convert the references of the input into a wm::Memory
Definition: MemoryBase.h:231
armarx::armem::server::ltm::detail::MemoryBase::_configure
virtual void _configure(const nlohmann::json &)
configuration
Definition: MemoryBase.h:376
armarx::armem::server::ltm::detail::MemoryBase::setRecordingMode
void setRecordingMode(const std::string &m)
Definition: MemoryBase.h:63
armarx::armem::server::ltm::detail::MemoryBase::Properties::storeOnStop
bool storeOnStop
Definition: MemoryBase.h:419
armarx::armem::server::ltm::detail::MemoryBase::loadAllAndResolve
void loadAllAndResolve(armem::wm::Memory &memory)
Definition: MemoryBase.h:221
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::server::ltm::detail::MemoryBase::resetStatistics
virtual void resetStatistics()
statistics
Definition: MemoryBase.h:325
armarx::armem::server::ltm::detail::MemoryBase::store
void store(const armem::server::wm::Memory &serverMemory)
append a wm::Memory instance to the ltm
Definition: MemoryBase.h:260
armarx::armem::server::ltm::detail::MemoryBase::_loadOnStartup
virtual void _loadOnStartup()=0
armarx::armem::server::ltm::detail::MemoryBase::ltm_mutex
std::recursive_mutex ltm_mutex
Definition: MemoryBase.h:443
ARMARX_DEBUG
#define ARMARX_DEBUG
Definition: Logging.h:184
armarx::armem::server::ltm::detail::MemoryBase::loadLatestNReferences
armem::wm::Memory loadLatestNReferences(int n)
Definition: MemoryBase.h:185
armarx::armem::server::ltm::detail::MemoryBase::_directlyStore
virtual void _directlyStore(const armem::wm::Memory &memory, bool simulatedVersion=false)=0
armarx::armem::server::ltm::detail::MemoryBase::Statistics::firstStop
bool firstStop
Definition: MemoryBase.h:47
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
armarx::armem::server::ltm::detail::MemoryBase::forEachCoreSegment
virtual bool forEachCoreSegment(std::function< void(CoreSegmentT &)> func) const =0
iterate over all core segments of this ltm
armarx::armem::server::ltm::detail::MemoryBase::Properties::persistenceStrategies
std::string persistenceStrategies
Definition: MemoryBase.h:432
armarx::armem::server::ltm::detail::MemoryBase::Properties::maxAmountOfSnapshotsLoaded
int maxAmountOfSnapshotsLoaded
Definition: MemoryBase.h:424
armarx::armem::server::ltm::detail::MemoryBase::loadAllAndResolve
armem::wm::Memory loadAllAndResolve()
return the full ltm as a wm::Memory and resolves the references the ltm may be huge,...
Definition: MemoryBase.h:213
armarx::armem::server::ltm::detail::MemoryBase::Properties::restDisableIfNotAvailable
bool restDisableIfNotAvailable
Definition: MemoryBase.h:436
armarx::armem::server::ltm::detail::MemoryBase::stopRecording
void stopRecording()
Definition: MemoryBase.h:311
armarx::armem::server::ltm::detail::MemoryBase::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::Properties::enabled_on_startup
bool enabled_on_startup
Definition: MemoryBase.h:411
operations.h
armarx::armem::server::ltm::detail::MemoryBase::getFilterStatistics
std::map< std::string, processor::SnapshotFilter::FilterStatistics > getFilterStatistics()
Definition: MemoryBase.h:339
armarx::armem::server::ltm::detail::MemoryBase::startRecording
void startRecording()
enable/disable
Definition: MemoryBase.h:303
armarx::armem::server::ltm::detail::MemoryBase::Properties::recordingMode
std::string recordingMode
Definition: MemoryBase.h:414
Component.h
memory_definitions.h
LoggingUtil.h
armarx::armem::server::ltm::detail::MemoryBase::setRecordingMode
void setRecordingMode(const RecordingMode m)
Definition: MemoryBase.h:84
armarx::armem::server::ltm::detail::MemoryBase::loadAllReferences
void loadAllReferences(armem::wm::Memory &memory)
Definition: MemoryBase.h:175
armarx::armem::server::ltm::detail::MemoryBase::Statistics::lastEnabled
armarx::core::time::DateTime lastEnabled
Definition: MemoryBase.h:44
armarx::armem::server::ltm::detail::MemoryBase::Properties::minDiskSpace
int minDiskSpace
Definition: MemoryBase.h:420
armarx::armem::server::ltm::RecordingMode::CONSOLIDATE_LATEST
@ CONSOLIDATE_LATEST
armarx::armem::server::ltm
Definition: forward_declarations.h:20
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::armem::server::ltm::detail::MemoryBase::Statistics::lastStopped
armarx::core::time::DateTime lastStopped
Definition: MemoryBase.h:51
armarx::armem::server::ltm::detail::MemoryItem::id
MemoryID id() const
Definition: MemoryItem.cpp:37
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:181
armarx::armem::server::ltm::CoreSegment
Definition: CoreSegment.h:13
armarx::armem::server::ltm::detail::MemoryBase::loadAllReferences
armem::wm::Memory loadAllReferences()
return the full ltm as a wm::Memory with only references the ltm may be huge, use with caution
Definition: MemoryBase.h:167
armarx::armem::server::ltm::detail::MemoryBase::loadOnStartup
void loadOnStartup()
Definition: MemoryBase.h:367
VAROUT
#define VAROUT(x)
Definition: StringHelpers.h:198
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::armem::server::ltm::detail::MemoryItem::setExportName
void setExportName(const std::string &n)
Definition: MemoryItem.cpp:23
time.h
armarx::armem::server::ltm::RecordingMode
RecordingMode
Definition: MemoryBase.h:27
armarx::armem::server::ltm::detail::MemoryBase::_setExportName
virtual void _setExportName(const std::string &)
Definition: MemoryBase.h:391
armarx::armem::server::ltm::detail::MemoryBase::loadLatestNReferences
void loadLatestNReferences(int n, armem::wm::Memory &memory, std::list< std::string > coreSegNames)
Definition: MemoryBase.h:195
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
armarx::armem::server::ltm::detail::MemoryBase::_store
virtual void _store(const armem::wm::Memory &memory)=0
armarx::armem::server::ltm::detail::MemoryBase::Properties::restPort
int restPort
Definition: MemoryBase.h:435
armarx::armem::server::ltm::RecordingMode::CONSOLIDATE_ALL
@ CONSOLIDATE_ALL
armarx::armem::toCommit
Commit toCommit(const ContainerT &container)
Definition: operations.h:23
armarx::armem::server::ltm::detail::MemoryItem
Interface functions for the longterm memory classes.
Definition: MemoryItem.h:13
MemoryItem.h
armarx::core::time::DateTime::Invalid
static DateTime Invalid()
Definition: DateTime.cpp:57
armarx::armem::server::ltm::detail::MemoryBase::_loadLatestNReferences
virtual void _loadLatestNReferences(int n, armem::wm::Memory &memory)=0
armarx::armem::server::ltm::RecordingMode::CONSOLIDATE_REMOVED
@ CONSOLIDATE_REMOVED
armarx::armem::server::ltm::detail::MemoryBase::Properties::export_name
std::string export_name
Definition: MemoryBase.h:417
armarx::armem::server::ltm::detail::MemoryBase::configure
void configure()
initialize config
Definition: MemoryBase.h:97
armarx::armem::server::ltm::detail::MemoryBase::store
void store(const armem::wm::Memory &memory)
append a wm::Memory instance to the ltm
Definition: MemoryBase.h:240