ProviderSegmentBase.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <functional>
4 
8 
9 #include "EntityBase.h"
10 #include "MemoryItem.h"
11 
13 {
14  /// @brief Interface functions for the longterm memory classes
15  template <class _EntityT>
17  {
18  public:
19  struct Statistics
20  {
21  long recordedEntities = 0;
22  };
23 
24  public:
25  using EntityT = _EntityT;
26 
28 
29  /// return the full sub-ltm as a wm::ProviderSegment with only references
30  /// the ltm may be huge, use with caution
31  void
33  {
34  _loadAllReferences(provSeg);
35  }
36 
37  void
39  {
40  _loadLatestNReferences(n, provSeg);
41  }
42 
43  /// convert the references of the input into a wm::Memory
44  void
46  {
47  _resolve(provSeg);
48  }
49 
50  /// encode the content of a wm::Memory and store
51  void
52  store(const armem::wm::ProviderSegment& provSeg, bool simulatedVersion)
53  {
54  _store(provSeg, simulatedVersion);
55  }
56 
57  /// statistics
58  void
60  {
62  }
63 
64  Statistics
65  getStatistics() const
66  {
67  return statistics;
68  }
69 
70  /// iterate over all core segments of this ltm
71  virtual bool forEachEntity(std::function<void(EntityT&)> func) const = 0;
72 
73  /// check if entity segment exists
74  virtual bool hasEntity(const std::string&) const = 0;
75 
76  /// find entity segment
77  virtual std::shared_ptr<EntityT> findEntity(const std::string&) const = 0;
78 
79  ///get aron type
81  aronType() const
82  {
83  return nullptr;
84  }
85 
86  static std::string
88  {
89  return "LT-ProviderSegment";
90  }
91 
92  protected:
94  virtual void _loadLatestNReferences(int n, armem::wm::ProviderSegment& p) = 0;
95  virtual void _resolve(armem::wm::ProviderSegment&) = 0;
96  virtual void _store(const armem::wm::ProviderSegment& p, bool simulatedVersion = false) = 0;
97 
98  protected:
99  mutable std::recursive_mutex ltm_mutex;
100 
101  Statistics statistics;
102  };
103 } // namespace armarx::armem::server::ltm::detail
EntityBase.h
armarx::armem::server::ltm::detail
Definition: CoreSegmentBase.cpp:3
armarx::armem::server::ltm::detail::ProviderSegmentBase::_store
virtual void _store(const armem::wm::ProviderSegment &p, bool simulatedVersion=false)=0
armarx::armem::server::ltm::detail::ProviderSegmentBase::resetStatistics
void resetStatistics()
statistics
Definition: ProviderSegmentBase.h:59
armarx::armem::server::ltm::detail::ProviderSegmentBase::hasEntity
virtual bool hasEntity(const std::string &) const =0
check if entity segment exists
armarx::armem::wm::ProviderSegment
Client-side working memory provider segment.
Definition: memory_definitions.h:105
armarx::armem::server::ltm::detail::ProviderSegmentBase::store
void store(const armem::wm::ProviderSegment &provSeg, bool simulatedVersion)
encode the content of a wm::Memory and store
Definition: ProviderSegmentBase.h:52
armarx::armem::server::ltm::detail::ProviderSegmentBase::aronType
aron::type::ObjectPtr aronType() const
get aron type
Definition: ProviderSegmentBase.h:81
MemoryID.h
armarx::armem::server::ltm::Entity
A memory storing data in mongodb (needs 'armarx memory start' to start the mongod instance)
Definition: Entity.h:14
armarx::armem::server::ltm::detail::ProviderSegmentBase::ltm_mutex
std::recursive_mutex ltm_mutex
Definition: ProviderSegmentBase.h:99
armarx::armem::server::ltm::detail::ProviderSegmentBase::getStatistics
Statistics getStatistics() const
Definition: ProviderSegmentBase.h:65
armarx::armem::server::ltm::detail::ProviderSegmentBase::_loadAllReferences
virtual void _loadAllReferences(armem::wm::ProviderSegment &)=0
armarx::armem::server::ltm::detail::MemoryItem::MemoryItem
MemoryItem(const std::string &exportName, const MemoryID &)
Definition: MemoryItem.cpp:10
aron_conversions.h
magic_enum::detail::n
constexpr auto n() noexcept
Definition: magic_enum.hpp:418
armarx::armem::server::ltm::detail::ProviderSegmentBase::findEntity
virtual std::shared_ptr< EntityT > findEntity(const std::string &) const =0
find entity segment
armarx::armem::server::ltm::detail::ProviderSegmentBase::loadAllReferences
void loadAllReferences(armem::wm::ProviderSegment &provSeg)
return the full sub-ltm as a wm::ProviderSegment with only references the ltm may be huge,...
Definition: ProviderSegmentBase.h:32
armarx::armem::server::ltm::detail::ProviderSegmentBase::loadLatestNReferences
void loadLatestNReferences(int n, armem::wm::ProviderSegment &provSeg)
Definition: ProviderSegmentBase.h:38
armarx::armem::server::ltm::detail::ProviderSegmentBase::forEachEntity
virtual bool forEachEntity(std::function< void(EntityT &)> func) const =0
iterate over all core segments of this ltm
armarx::armem::server::ltm::detail::ProviderSegmentBase::Statistics::recordedEntities
long recordedEntities
Definition: ProviderSegmentBase.h:21
armarx::armem::server::ltm::detail::ProviderSegmentBase::EntityT
_EntityT EntityT
Definition: ProviderSegmentBase.h:25
armarx::armem::server::ltm::detail::ProviderSegmentBase::_resolve
virtual void _resolve(armem::wm::ProviderSegment &)=0
armarx::armem::server::ltm::detail::ProviderSegmentBase::statistics
Statistics statistics
Definition: ProviderSegmentBase.h:101
armarx::armem::server::ltm::detail::ProviderSegmentBase::getLevelName
static std::string getLevelName()
Definition: ProviderSegmentBase.h:87
armarx::armem::server::ltm::detail::ProviderSegmentBase::Statistics
Definition: ProviderSegmentBase.h:19
memory_definitions.h
armarx::armem::server::ltm::detail::ProviderSegmentBase::resolve
void resolve(armem::wm::ProviderSegment &provSeg)
convert the references of the input into a wm::Memory
Definition: ProviderSegmentBase.h:45
armarx::armem::server::ltm::detail::ProviderSegmentBase::_loadLatestNReferences
virtual void _loadLatestNReferences(int n, armem::wm::ProviderSegment &p)=0
armarx::armem::server::ltm::detail::ProviderSegmentBase
Interface functions for the longterm memory classes.
Definition: ProviderSegmentBase.h:16
armarx::aron::type::ObjectPtr
std::shared_ptr< Object > ObjectPtr
Definition: Object.h:36
armarx::armem::server::ltm::detail::MemoryItem
Interface functions for the longterm memory classes.
Definition: MemoryItem.h:13
MemoryItem.h