Memory.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <filesystem>
4 
5 // Base Class
6 #include "detail/MemoryBase.h"
11 
12 // Segmnet Type
13 #include "CoreSegment.h"
14 
16 {
17  /// @brief A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mongod instance)
18  class Memory :
19  public detail::MemoryBase<CoreSegment>,
20  public detail::mixin::BufferedMemoryMixin<CoreSegment>,
21  public detail::mixin::CachedMemoryMixin<CoreSegment>,
24  {
25  public:
31 
32  Memory();
33  Memory(const detail::mixin::Path&, const std::string&, const std::string&);
36  const std::string&,
37  const std::string&);
38 
39  void _setExportName(const std::string& n) final;
40  void _setMemoryID(const MemoryID& id) 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& name) const final;
47  std::unique_ptr<CoreSegment>
48  findCoreSegment(const std::string& coreSegmentName) const final;
49 
50  void createPropertyDefinitions(PropertyDefinitionsPtr& defs, const std::string& prefix) override;
51 
52  /**
53  * @brief getAndSaveStatistics generates and saves statistics for a LTM recording
54  */
55  void getAndSaveStatistics();
56 
57  protected:
58  void _loadAllReferences(armem::wm::Memory&) final;
59  void _resolve(armem::wm::Memory&) final;
60  void _store(const armem::wm::Memory&) final;
61  void _directlyStore(const armem::wm::Memory&) final;
62 
63  private:
64  std::time_t current_date;
65  };
66 } // namespace armarx::armem::server::ltm
armarx::armem::server::ltm::Memory::_loadAllReferences
void _loadAllReferences(armem::wm::Memory &) final
Definition: Memory.cpp:171
MongoDBStorageMixin.h
armarx::armem::server::ltm::Memory::_setExportName
void _setExportName(const std::string &n) final
Definition: Memory.cpp:48
BufferedMemoryMixin.h
armarx::armem::server::ltm::Memory::Memory
Memory()
Definition: Memory.cpp:21
armarx::armem::server::ltm::Memory::getAndSaveStatistics
void getAndSaveStatistics()
getAndSaveStatistics generates and saves statistics for a LTM recording
Definition: Memory.cpp:256
armarx::armem::server::ltm::Memory::_directlyStore
void _directlyStore(const armem::wm::Memory &) final
Definition: Memory.cpp:216
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:163
armarx::armem
Definition: LegacyRobotStateMemoryAdapter.cpp:31
armarx::armem::server::ltm::Memory::_disable
void _disable() final
Definition: Memory.cpp:62
CoreSegment.h
armarx::armem::server::ltm::Memory::_configure
void _configure(const nlohmann::json &config) final
configuration
Definition: Memory.cpp:11
armarx::armem::server::ltm::detail::MemoryBase
Interface functions for the longterm memory classes.
Definition: MemoryBase.h:27
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:18
armarx::armem::server::ltm::Memory::_resolve
void _resolve(armem::wm::Memory &) final
Definition: Memory.cpp:189
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::server::ltm::Memory::_setMemoryID
void _setMemoryID(const MemoryID &id) final
Definition: Memory.cpp:71
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:82
armarx::armem::server::ltm::detail::mixin::MongoDBStorageMixin
Definition: MongoDBStorageMixin.h:45
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:55
armarx::armem::server::ltm::CoreSegment
Definition: CoreSegment.h:13
std
Definition: Application.h:66
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::armem::server::ltm::detail::mixin::BufferedMemoryMixin
Definition: BufferedMemoryMixin.h:16
armarx::armem::server::ltm::detail::mixin::MongoDBSettings
Definition: MongoDBStorageMixin.h:15
armarx::armem::server::ltm::detail::mixin::Path
std::filesystem::path Path
Definition: DiskStorageMixin.h:17
armarx::armem::server::ltm::Memory::findCoreSegment
std::unique_ptr< CoreSegment > findCoreSegment(const std::string &coreSegmentName) const final
find core segment
Definition: Memory.cpp:146
armarx::armem::server::ltm::Memory::_store
void _store(const armem::wm::Memory &) final
Definition: Memory.cpp:210
armarx::armem::server::ltm::Memory::hasCoreSegment
bool hasCoreSegment(const std::string &name) const final
check if core segment exists
Definition: Memory.cpp:109
CachedMemoryMixin.h
armarx::armem::server::ltm::detail::mixin::DiskMemoryItemMixin
Definition: DiskStorageMixin.h:19
DiskStorageMixin.h
armarx::armem::server::ltm::detail::MemoryItem::name
std::string name() const
Definition: MemoryItem.cpp:43