Memory Class Reference

A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mongod instance) More...

#include <RobotAPI/libraries/armem/server/ltm/Memory.h>

+ Inheritance diagram for Memory:

Public Types

using BufferedBase = detail::mixin::BufferedMemoryMixin< CoreSegment >
 
using CachedBase = detail::mixin::CachedMemoryMixin< CoreSegment >
 
using MemoryBase = detail::MemoryBase< CoreSegment >
 
- Public Types inherited from MemoryBase< CoreSegment >
using CoreSegmentT = CoreSegment
 

Public Member Functions

void _configure (const nlohmann::json &config) final
 configuration More...
 
void _disable () final
 
void _enable () final
 
void _setExportName (const std::string &memoryName) final
 
void _setMemoryID (const MemoryID &memoryId) final
 
void createPropertyDefinitions (PropertyDefinitionsPtr &defs, const std::string &prefix) override
 default parameters. Implementation should use the configuration to configure More...
 
std::shared_ptr< CoreSegmentfindCoreSegment (const std::string &coreSegmentName) const final
 find core segment More...
 
bool forEachCoreSegment (std::function< void(CoreSegment &)> func) const final
 iterate over all core segments of this ltm More...
 
void getAndSaveStatistics ()
 getAndSaveStatistics generates and saves statistics for a LTM recording More...
 
std::shared_ptr< persistence::RedundantPersistenceStrategygetPersistenceStrategy () const
 
bool hasCoreSegment (const std::string &coreSegmentName) const final
 check if core segment exists More...
 
 Memory ()
 
 Memory (const std::string &exportName, const std::string &memoryName)
 
 Memory (const std::string &exportName, const std::string &memoryName, const std::shared_ptr< persistence::RedundantPersistenceStrategy > &persistenceStrategy)
 
void setPersistenceStrategy (std::shared_ptr< persistence::RedundantPersistenceStrategy > persistenceStrategy)
 
- Public Member Functions inherited from MemoryBase< CoreSegment >
void configure ()
 initialize config More...
 
void disable ()
 disable this LTM More...
 
void enable ()
 enable this LTM More...
 
std::map< std::string, processor::SnapshotFilter::FilterStatisticsgetFilterStatistics ()
 
RecordingMode getRecordingMode () const
 
Statistics getStatistics () const
 
bool isRecording () const
 
armem::wm::Memory loadAllAndResolve ()
 return the full ltm as a wm::Memory and resolves the references the ltm may be huge, use with caution More...
 
void loadAllAndResolve (armem::wm::Memory &memory)
 
armem::wm::Memory loadAllReferences ()
 return the full ltm as a wm::Memory with only references the ltm may be huge, use with caution More...
 
void loadAllReferences (armem::wm::Memory &memory)
 
armem::wm::Memory loadLatestNReferences (int n)
 
void loadLatestNReferences (int n, armem::wm::Memory &memory)
 
void loadLatestNReferences (int n, armem::wm::Memory &memory, std::list< std::string > coreSegNames)
 
void loadOnStartup ()
 
 MemoryBase (const std::string &exportName, const MemoryID &id)
 
virtual void resetStatistics ()
 statistics More...
 
void resolve (armem::wm::Memory &memory)
 convert the references of the input into a wm::Memory More...
 
void setRecordingMode (const RecordingMode m)
 
void setRecordingMode (const std::string &m)
 
void startRecording ()
 enable/disable More...
 
void stopRecording ()
 
void store (const armem::server::wm::Memory &serverMemory)
 append a wm::Memory instance to the ltm More...
 
void store (const armem::wm::Memory &memory)
 append a wm::Memory instance to the ltm More...
 
- Public Member Functions inherited from MemoryItem
virtual std::string getExportName () const
 
MemoryID getMemoryID () const
 
MemoryID id () const
 
 MemoryItem (const std::string &exportName, const MemoryID &)
 
 MemoryItem (const std::string &exportName, const MemoryID &, const std::shared_ptr< Processors > &)
 
std::string name () const
 
void setExportName (const std::string &n)
 
void setMemoryID (const MemoryID &)
 
void setMemoryName (const std::string &memoryName)
 
virtual ~MemoryItem ()=default
 
- Public Member Functions inherited from BufferedMemoryMixin< CoreSegment >
 BufferedMemoryMixin (const MemoryID &id)
 
void bufferFinished ()
 
void directlyStore (const armem::server::wm::Memory &serverMemory, bool simulatedVersion=false)
 
void directlyStore (const armem::wm::Memory &memory, bool simulatedVersion=false)
 
virtual ~BufferedMemoryMixin ()=default
 
- Public Member Functions inherited from CachedMemoryMixin< CoreSegment >
 CachedMemoryMixin (const MemoryID &id)
 

Protected Member Functions

void _directlyStore (const armem::wm::Memory &wmMemory, bool simulatedVersion) final
 
void _loadAllReferences (armem::wm::Memory &wmMemory) final
 
void _loadLatestNReferences (int n, armem::wm::Memory &wmMemory) final
 
void _loadLatestNReferences (int n, armem::wm::Memory &wmMemory, std::list< std::string > coreSegNames) final
 
void _loadOnStartup () final
 
void _resolve (armem::wm::Memory &wmMemory) final
 
void _store (const armem::wm::Memory &wmMemory) final
 
- Protected Member Functions inherited from BufferedMemoryMixin< CoreSegment >
void addToBuffer (const armem::wm::Memory &memory)
 
void configureMixin (const nlohmann::json &json)
 configuration More...
 
void createPropertyDefinitions (PropertyDefinitionsPtr &defs, const std::string &prefix)
 
armem::wm::Memory getBuffer () const
 
void setMixinMemoryID (const MemoryID &id)
 
void start ()
 
void stop ()
 
void storeBuffer ()
 
- Protected Member Functions inherited from CachedMemoryMixin< CoreSegment >
void addToCache (const armem::wm::Memory &memory)
 
bool cacheHasCoreSegment (const MemoryID &n) const
 
bool cacheHasCoreSegment (const std::string &n) const
 
bool cacheHasEntity (const MemoryID &n) const
 
bool cacheHasEntityInstance (const MemoryID &n) const
 
bool cacheHasEntitySnapshot (const MemoryID &n) const
 
bool cacheHasProviderSegment (const MemoryID &n) const
 
void configureMixin (const nlohmann::json &json)
 configuration More...
 
armem::wm::Memory getCache () const
 
void setMixinMemoryID (const MemoryID &id)
 

Additional Inherited Members

- Static Public Member Functions inherited from MemoryBase< CoreSegment >
static std::string getLevelName ()
 get level name1 More...
 
- Public Attributes inherited from MemoryBase< CoreSegment >
struct armarx::armem::server::ltm::detail::MemoryBase::Properties p
 
- Protected Attributes inherited from MemoryBase< CoreSegment >
std::atomic_bool enabled
 
std::recursive_mutex ltm_mutex
 
RecordingMode recordingMode
 
Statistics statistics
 
- Protected Attributes inherited from MemoryItem
std::shared_ptr< Processorsprocessors
 
- Protected Attributes inherited from BufferedMemoryMixin< CoreSegment >
std::unique_ptr< armem::wm::Memorybuffer
 Internal memory for data consolidated from wm to ltm (double-buffer) The to-put-to-ltm buffer (contains data in plain text) This buffer may still be filtered (e.g. More...
 
std::atomic_flag storeFlag
 
float storeFrequency
 The frequency (Hz) to store data to the ltm. More...
 
std::unique_ptr< armem::wm::Memoryto_store
 
- Protected Attributes inherited from CachedMemoryMixin< CoreSegment >
std::unique_ptr< armem::wm::Memorycache
 

Detailed Description

A memory storing data on the hard drive and in mongodb (needs 'armarx memory start' to start the mongod instance)

Definition at line 20 of file Memory.h.

Member Typedef Documentation

◆ BufferedBase

◆ CachedBase

Definition at line 28 of file Memory.h.

◆ MemoryBase

Definition at line 26 of file Memory.h.

Constructor & Destructor Documentation

◆ Memory() [1/3]

Memory ( )

Definition at line 115 of file Memory.cpp.

◆ Memory() [2/3]

Memory ( const std::string &  exportName,
const std::string &  memoryName 
)

Definition at line 119 of file Memory.cpp.

◆ Memory() [3/3]

Memory ( const std::string &  exportName,
const std::string &  memoryName,
const std::shared_ptr< persistence::RedundantPersistenceStrategy > &  persistenceStrategy 
)

Definition at line 127 of file Memory.cpp.

Member Function Documentation

◆ _configure()

void _configure ( const nlohmann::json &  )
finalvirtual

configuration

ARMARX_INFO << "MemoryID=" << getMemoryID().str(); ARMARX_INFO << "Identifier=" << identifier; ARMARX_INFO << "Export name=" << getExportName(); ARMARX_INFO << "Host=" << p.restHost; ARMARX_INFO << "Port=" << p.restPort; ARMARX_INFO << "DisableIfNotAvailable=" << p.restDisableIfNotAvailable;

std::shared_ptr<armem::server::ltm::persistence::RestPersistence> restPersistence = std::make_shared<armem::server::ltm::persistence::RestPersistence>( identifier, getExportName(), p.restHost, p.restPort, p.restDisableIfNotAvailable);

redundantPersistence->addStrategy(restPersistence);

Reimplemented from MemoryBase< CoreSegment >.

Definition at line 18 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _directlyStore()

void _directlyStore ( const armem::wm::Memory wmMemory,
bool  simulatedVersion 
)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 390 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _disable()

void _disable ( )
finalvirtual

Reimplemented from MemoryBase< CoreSegment >.

Definition at line 158 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _enable()

void _enable ( )
finalvirtual

Reimplemented from MemoryBase< CoreSegment >.

Definition at line 150 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _loadAllReferences()

void _loadAllReferences ( armem::wm::Memory wmMemory)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 253 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _loadLatestNReferences() [1/2]

void _loadLatestNReferences ( int  n,
armem::wm::Memory wmMemory 
)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 283 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _loadLatestNReferences() [2/2]

void _loadLatestNReferences ( int  n,
armem::wm::Memory wmMemory,
std::list< std::string >  coreSegNames 
)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 313 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _loadOnStartup()

void _loadOnStartup ( )
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 432 of file Memory.cpp.

◆ _resolve()

void _resolve ( armem::wm::Memory wmMemory)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 359 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _setExportName()

void _setExportName ( const std::string &  memoryName)
finalvirtual

Reimplemented from MemoryBase< CoreSegment >.

Definition at line 139 of file Memory.cpp.

◆ _setMemoryID()

void _setMemoryID ( const MemoryID memoryId)
finalvirtual

Reimplemented from MemoryItem.

Definition at line 168 of file Memory.cpp.

+ Here is the call graph for this function:

◆ _store()

void _store ( const armem::wm::Memory wmMemory)
finalprotectedvirtual

Implements MemoryBase< CoreSegment >.

Definition at line 383 of file Memory.cpp.

+ Here is the call graph for this function:

◆ createPropertyDefinitions()

void createPropertyDefinitions ( PropertyDefinitionsPtr defs,
const std::string &  prefix 
)
overridevirtual

default parameters. Implementation should use the configuration to configure

Reimplemented from MemoryBase< CoreSegment >.

Definition at line 244 of file Memory.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ findCoreSegment()

std::shared_ptr< CoreSegment > findCoreSegment ( const std::string &  ) const
finalvirtual

find core segment

Implements MemoryBase< CoreSegment >.

Definition at line 223 of file Memory.cpp.

+ Here is the call graph for this function:

◆ forEachCoreSegment()

bool forEachCoreSegment ( std::function< void(CoreSegment &)>  func) const
finalvirtual

iterate over all core segments of this ltm

Implements MemoryBase< CoreSegment >.

Definition at line 182 of file Memory.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAndSaveStatistics()

void getAndSaveStatistics ( )

getAndSaveStatistics generates and saves statistics for a LTM recording

Definition at line 438 of file Memory.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPersistenceStrategy()

std::shared_ptr<persistence::RedundantPersistenceStrategy> getPersistenceStrategy ( ) const
inline

Definition at line 66 of file Memory.h.

+ Here is the caller graph for this function:

◆ hasCoreSegment()

bool hasCoreSegment ( const std::string &  ) const
finalvirtual

check if core segment exists

Implements MemoryBase< CoreSegment >.

Definition at line 210 of file Memory.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setPersistenceStrategy()

void setPersistenceStrategy ( std::shared_ptr< persistence::RedundantPersistenceStrategy persistenceStrategy)
inline

Definition at line 59 of file Memory.h.

+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: