Memory.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <list>
4 
5 // Base Class
6 #include "detail/MemoryBase.h"
9 
10 // Persistence
13 
14 // Segmnet Type
15 #include "CoreSegment.h"
16 
18 {
19  /// @brief A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mongod instance)
20  class Memory :
21  public detail::MemoryBase<CoreSegment>,
22  public detail::mixin::BufferedMemoryMixin<CoreSegment>,
23  public detail::mixin::CachedMemoryMixin<CoreSegment>
24  {
25  public:
29 
30  Memory();
31 
32  Memory(const std::string& exportName, const std::string& memoryName);
33 
34  Memory(
35  const std::string& exportName,
36  const std::string& memoryName,
37  const std::shared_ptr<persistence::RedundantPersistenceStrategy>& persistenceStrategy);
38 
39  void _setExportName(const std::string& memoryName) final;
40  void _setMemoryID(const MemoryID& memoryId) final;
41  void _enable() final;
42  void _disable() final;
43  void _configure(const nlohmann::json& config) final;
44 
45  bool forEachCoreSegment(std::function<void(CoreSegment&)> func) const final;
46  bool hasCoreSegment(const std::string& coreSegmentName) const final;
47  std::shared_ptr<CoreSegment>
48  findCoreSegment(const std::string& coreSegmentName) const final;
49 
51  const std::string& prefix) override;
52 
53  /**
54  * @brief getAndSaveStatistics generates and saves statistics for a LTM recording
55  */
56  void getAndSaveStatistics();
57 
58  void
60  std::shared_ptr<persistence::RedundantPersistenceStrategy> persistenceStrategy)
61  {
62  persistenceStrategy_ = persistenceStrategy;
63  }
64 
65  std::shared_ptr<persistence::RedundantPersistenceStrategy>
67  {
68  return persistenceStrategy_;
69  }
70 
71  protected:
72  void _loadAllReferences(armem::wm::Memory& wmMemory) final;
73  void _loadLatestNReferences(int n, armem::wm::Memory& wmMemory) final;
74  void _loadLatestNReferences(int n,
75  armem::wm::Memory& wmMemory,
76  std::list<std::string> coreSegNames) final;
77  void _resolve(armem::wm::Memory& wmMemory) final;
78  void _store(const armem::wm::Memory& wmMemory) final;
79  void _directlyStore(const armem::wm::Memory& wmMemory, bool simulatedVersion) final;
80  void _loadOnStartup() final;
81 
82  private:
83  std::time_t current_date;
84 
85  std::shared_ptr<persistence::RedundantPersistenceStrategy> persistenceStrategy_;
86 
87  std::vector<std::string> split(std::string str, char delimiter);
88  };
89 } // namespace armarx::armem::server::ltm
str
std::string str(const T &t)
Definition: UserAssistedSegmenterGuiWidgetController.cpp:43
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::Memory::findCoreSegment
std::shared_ptr< CoreSegment > findCoreSegment(const std::string &coreSegmentName) const final
find core segment
Definition: Memory.cpp:223
BufferedMemoryMixin.h
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::server::ltm::Memory::_loadAllReferences
void _loadAllReferences(armem::wm::Memory &wmMemory) final
Definition: Memory.cpp:253
MemoryBase.h
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::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
armarx::armem::server::ltm::Memory::_disable
void _disable() final
Definition: Memory.cpp:158
CoreSegment.h
RedundantPersistenceStrategy.h
magic_enum::detail::n
constexpr auto n() noexcept
Definition: magic_enum.hpp:418
armarx::armem::server::ltm::Memory::_configure
void _configure(const nlohmann::json &config) final
configuration
Definition: Memory.cpp:18
armarx::armem::server::ltm::detail::MemoryBase
Interface functions for the longterm memory classes.
Definition: MemoryBase.h:39
armarx::armem::server::ltm::Memory::getPersistenceStrategy
std::shared_ptr< persistence::RedundantPersistenceStrategy > getPersistenceStrategy() const
Definition: Memory.h:66
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::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
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::wm::Memory
Client-side working memory.
Definition: memory_definitions.h:133
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::Memory::_setMemoryID
void _setMemoryID(const MemoryID &memoryId) final
Definition: Memory.cpp:168
armarx::armem::server::ltm::detail::mixin::CachedMemoryMixin
Definition: CachedMemoryMixin.h:12
armarx::armem::server::ltm
Definition: forward_declarations.h:20
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::CoreSegment
Definition: CoreSegment.h:13
std
Definition: Application.h:66
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
Definition: BufferedMemoryMixin.h:18
CachedMemoryMixin.h
armarx::armem::server::ltm::Memory::_setExportName
void _setExportName(const std::string &memoryName) final
Definition: Memory.cpp:139