Entity.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 
5 // Base Class
6 #include "EntitySnapshot.h"
7 #include "detail/EntityBase.h"
8 
10 
12 {
13  /// @brief A memory storing data in mongodb (needs 'armarx memory start' to start the mongod instance)
14  class Entity :
15  public detail::EntityBase<EntitySnapshot>
16  {
17  public:
18  Entity(const std::string& exportName,
19  const MemoryID& memoryId,
20  const std::shared_ptr<Processors>& filters,
21  const std::shared_ptr<persistence::MemoryPersistenceStrategy>& persistenceStrategy);
22 
23  bool hasSnapshot(const Time& snapshotTime) const override;
24 
25  bool forEachSnapshot(std::function<void(EntitySnapshot&)> func) const override;
26  bool forEachSnapshotInIndexRange(long first,
27  long last,
28  std::function<void(EntitySnapshot&)> func) const override;
30  const Time& max,
31  std::function<void(EntitySnapshot&)> func) const override;
32  bool forEachSnapshotBeforeOrAt(const Time& time,
33  std::function<void(EntitySnapshot&)> func) const override;
34  bool forEachSnapshotBefore(const Time& time,
35  std::function<void(EntitySnapshot&)> func) const override;
36 
37  std::shared_ptr<EntitySnapshot> findSnapshot(const Time& snapshotTime) const override;
38  std::shared_ptr<EntitySnapshot> findLatestSnapshot() const override;
39  std::shared_ptr<EntitySnapshot> findLatestSnapshotBefore(const Time& time) const override;
40  std::shared_ptr<EntitySnapshot>
41  findLatestSnapshotBeforeOrAt(const Time& time) const override;
42  std::shared_ptr<EntitySnapshot> findFirstSnapshotAfter(const Time& time) const override;
43  std::shared_ptr<EntitySnapshot> findFirstSnapshotAfterOrAt(const Time& time) const override;
44 
45  protected:
46  void _loadAllReferences(armem::wm::Entity& wmEntity) override;
47  void _loadLatestNReferences(int n, armem::wm::Entity& wmEntity) override;
48  void _resolve(armem::wm::Entity& wmEntity) override;
49  void _store(const armem::wm::Entity& wmEntity, bool simulatedVersion) override;
50 
51  private:
52  std::shared_ptr<persistence::MemoryPersistenceStrategy> persistenceStrategy_;
53  };
54 
55 } // namespace armarx::armem::server::ltm
EntityBase.h
armarx::armem::server::ltm::Entity::forEachSnapshotBefore
bool forEachSnapshotBefore(const Time &time, std::function< void(EntitySnapshot &)> func) const override
Definition: Entity.cpp:135
armarx::armem::server::ltm::Entity::findLatestSnapshotBefore
std::shared_ptr< EntitySnapshot > findLatestSnapshotBefore(const Time &time) const override
Definition: Entity.cpp:222
MemoryPersistenceStrategy.h
armarx::armem::server::ltm::Entity::findFirstSnapshotAfterOrAt
std::shared_ptr< EntitySnapshot > findFirstSnapshotAfterOrAt(const Time &time) const override
Definition: Entity.cpp:323
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::max
std::vector< T > max(const std::vector< T > &v1, const std::vector< T > &v2)
Definition: VectorHelpers.h:297
armarx::armem::server::ltm::Entity::findFirstSnapshotAfter
std::shared_ptr< EntitySnapshot > findFirstSnapshotAfter(const Time &time) const override
Definition: Entity.cpp:290
armarx::armem::server::ltm::Entity::forEachSnapshot
bool forEachSnapshot(std::function< void(EntitySnapshot &)> func) const override
iterate over all entity snapshots of this ltm
Definition: Entity.cpp:27
magic_enum::detail::n
constexpr auto n() noexcept
Definition: magic_enum.hpp:418
armarx::armem::server::ltm::Entity::forEachSnapshotInTimeRange
bool forEachSnapshotInTimeRange(const Time &min, const Time &max, std::function< void(EntitySnapshot &)> func) const override
Definition: Entity.cpp:94
armarx::armem::server::ltm::Entity::_store
void _store(const armem::wm::Entity &wmEntity, bool simulatedVersion) override
Definition: Entity.cpp:446
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::server::ltm::Entity::_resolve
void _resolve(armem::wm::Entity &wmEntity) override
Definition: Entity.cpp:420
armarx::armem::server::ltm::Entity::forEachSnapshotBeforeOrAt
bool forEachSnapshotBeforeOrAt(const Time &time, std::function< void(EntitySnapshot &)> func) const override
Definition: Entity.cpp:115
armarx::armem::server::ltm::Entity::_loadLatestNReferences
void _loadLatestNReferences(int n, armem::wm::Entity &wmEntity) override
Definition: Entity.cpp:378
armarx::armem::server::ltm::Entity::Entity
Entity(const std::string &exportName, const MemoryID &memoryId, const std::shared_ptr< Processors > &filters, const std::shared_ptr< persistence::MemoryPersistenceStrategy > &persistenceStrategy)
Definition: Entity.cpp:20
EntitySnapshot.h
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::EntityBase
Interface functions for the longterm memory classes.
Definition: EntityBase.h:17
armarx::armem::server::ltm::Entity::forEachSnapshotInIndexRange
bool forEachSnapshotInIndexRange(long first, long last, std::function< void(EntitySnapshot &)> func) const override
Definition: Entity.cpp:59
armarx::min
std::vector< T > min(const std::vector< T > &v1, const std::vector< T > &v2)
Definition: VectorHelpers.h:327
armarx::armem::server::ltm::Entity::findLatestSnapshot
std::shared_ptr< EntitySnapshot > findLatestSnapshot() const override
Definition: Entity.cpp:187
armarx::armem::server::ltm::Entity::findLatestSnapshotBeforeOrAt
std::shared_ptr< EntitySnapshot > findLatestSnapshotBeforeOrAt(const Time &time) const override
Definition: Entity.cpp:257
armarx::armem::server::ltm::Entity::findSnapshot
std::shared_ptr< EntitySnapshot > findSnapshot(const Time &snapshotTime) const override
find entity snapshot segment
Definition: Entity.cpp:169
armarx::armem::wm::Entity
Client-side working memory entity.
Definition: memory_definitions.h:93
armarx::armem::server::ltm::Entity::_loadAllReferences
void _loadAllReferences(armem::wm::Entity &wmEntity) override
Definition: Entity.cpp:355
armarx::armem::server::ltm::EntitySnapshot
Definition: EntitySnapshot.h:14
armarx::armem::server::ltm::Entity::hasSnapshot
bool hasSnapshot(const Time &snapshotTime) const override
check if snapshot segment exists
Definition: Entity.cpp:154