GraphMemorySegment Class Reference

The Graph Memory Segment contains directed graphs. The graph consists of nodes with poses and edges between them. The poses in the nodes and the edges are used for platform navigation. Additionally, thee nodes are used for symbolic planning. One segment can contain multiple graphs. They distinguished by their scene-name. See Slice API documentation for GraphMemorySegmentBase. More...

#include <MemoryX/libraries/memorytypes/segment/GraphMemorySegment.h>

+ Inheritance diagram for GraphMemorySegment:

Public Member Functions

bool addEdge (const std::string &fromId, const std::string &toId, const Ice::Current &c=Ice::emptyCurrent) override
 
std::string addNode (const memoryx::GraphNodeBasePtr &node, const Ice::Current &c=Ice::emptyCurrent) override
 
::memoryx::GraphNodeBaseList aStar (const ::std::string &idFrom, const ::std::string &idTo, const ::Ice::Current &=Ice::emptyCurrent) override
 
void clearScene (const std::string &sceneName, const Ice::Current &c=Ice::emptyCurrent) override
 
memoryx::GraphNodeBaseList getAllNodes (const Ice::Current &c=Ice::emptyCurrent) override
 
memoryx::GraphNodeBasePtr getNodeById (const std::string &entityId, const Ice::Current &c=Ice::emptyCurrent) override
 
memoryx::GraphNodeBasePtr getNodeByName (const std::string &entityName, const Ice::Current &c=Ice::emptyCurrent) override
 
::memoryx::GraphNodeBasePtr getNodeFromSceneByName (const ::std::string &sceneName, const ::std::string &nodeName, const ::Ice::Current &=Ice::emptyCurrent) override
 
memoryx::GraphNodeBaseList getNodesByScene (const std::string &sceneName, const Ice::Current &c=Ice::emptyCurrent) override
 
Ice::StringSeq getScenes (const Ice::Current &c=Ice::emptyCurrent) const override
 
 GraphMemorySegment (CollectionInterfacePrx entityCollection, Ice::CommunicatorPtr ic, bool useMongoIds=true)
 
bool hasNodeWithName (const ::std::string &sceneName, const ::std::string &nodeName, const ::Ice::Current &=Ice::emptyCurrent) override
 
bool hasScene (const ::std::string &sceneName, const ::Ice::Current &c=Ice::emptyCurrent) override
 
bool removeEdge (const std::string &startNodeId, const std::string &endNodeId, const Ice::Current &) override
 
bool removeNode (const std::string &, const Ice::Current &) override
 
 ~GraphMemorySegment () override
 
- Public Member Functions inherited from PersistentEntitySegment
std::string addEntity (const EntityBasePtr &entity, const ::Ice::Current &c=Ice::emptyCurrent) override
 addEntity add new entity and return the newly generated entity ID More...
 
EntityIdList addEntityList (const EntityBaseList &entityList, const Ice::Current &=Ice::emptyCurrent) override
 addEntityList adds all entities contained in \entityList to this segment and returns a list of created entity IDs More...
 
virtual EntityIdList addEntityListThreadUnsafe (const EntityBaseList &entityList)
 
virtual std::string addEntityThreadUnsafe (const EntityBasePtr &entity)
 
void addReadCollection (const CollectionInterfacePrx &coll, const ::Ice::Current &=Ice::emptyCurrent) override
 
void clear (const ::Ice::Current &=Ice::emptyCurrent) override
 clear removes all elements from the current memoryx::PersistentEntitySegment::writeCollection More...
 
void clearReadCollections (const ::Ice::Current &=Ice::emptyCurrent) override
 
EntityRefList findRefsByQuery (const std::string &query, const Ice::Current &c) override
 retrieves Entity Refs that match the query. More...
 
EntityBaseList getAllEntities (const ::Ice::Current &=Ice::emptyCurrent) const override
 getAllEntities returns a list of all entities managed by this memory segment More...
 
EntityIdList getAllEntityIds (const ::Ice::Current &=Ice::emptyCurrent) const override
 
virtual EntityIdList getAllEntityIdsThreadUnsafe () const
 
EntityBaseList getEntitiesByAttrValue (const ::std::string &attrName, const ::std::string &attrValue, const ::Ice::Current &=Ice::emptyCurrent) const override
 
EntityBaseList getEntitiesByAttrValueList (const ::std::string &attrName, const NameList &attrValueList, const ::Ice::Current &=Ice::emptyCurrent) const override
 
EntityBasePtr getEntityById (const ::std::string &entityId, const ::Ice::Current &=Ice::emptyCurrent) const override
 
virtual EntityBasePtr getEntityByIdThreadUnsafe (const ::std::string &entityId) const
 
EntityBasePtr getEntityByName (const ::std::string &name, const ::Ice::Current &=Ice::emptyCurrent) const override
 
virtual EntityBasePtr getEntityByNameThreadUnsafe (const ::std::string &name) const
 
EntityRefBasePtr getEntityRefById (const std::string &id, const Ice::Current &) const override
 
EntityRefBasePtr getEntityRefByName (const std::string &name, const Ice::Current &c) const override
 
::Ice::Identity getIceId (const ::Ice::Current &=Ice::emptyCurrent) const override
 
IdEntityMap getIdEntityMap (const ::Ice::Current &=Ice::emptyCurrent) const override
 
std::string getObjectTypeId (const ::Ice::Current &=Ice::emptyCurrent) const override
 
NameList getReadCollectionsNS (const ::Ice::Current &=Ice::emptyCurrent) const override
 
std::string getSegmentName (const ::Ice::Current &=Ice::emptyCurrent) const override
 
std::string getWriteCollectionNS (const ::Ice::Current &=Ice::emptyCurrent) const override
 
bool hasEntityById (const std::string &entityId, const Ice::Current &=Ice::emptyCurrent) const override
 
bool hasEntityByIdThreadUnsafe (const std::string &entityId) const
 
bool hasEntityByName (const std::string &entityName, const Ice::Current &=Ice::emptyCurrent) const override
 
bool hasEntityByNameThreadUnsafe (const std::string &entityName) const
 
 PersistentEntitySegment (CollectionInterfacePrx entityCollection, Ice::CommunicatorPtr ic, bool useMongoIds=true)
 
void print (const ::Ice::Current &=Ice::emptyCurrent) const override
 
void removeAllEntities (const ::Ice::Current &c=Ice::emptyCurrent) override
 removeAllEntities collects all entities managed by this memory segment and removes them from the segment More...
 
void removeEntity (const ::std::string &entityId, const ::Ice::Current &=Ice::emptyCurrent) override
 removeEntity removes an entity with the ID entityId More...
 
virtual void removeEntityThreadUnsafe (const ::std::string &entityId)
 
void setEntityAttribute (const std::string &entityId, const EntityAttributeBasePtr &attribute, const Ice::Current &) override
 
void setEntityAttributes (const std::string &entityId, const EntityAttributeList &attributeMap, const Ice::Current &) override
 
void setParentMemory (const MemoryInterfacePtr &memory, const Ice::Current &) override
 
void setSingleRWCollection (const CollectionInterfacePrx &coll, const ::Ice::Current &=Ice::emptyCurrent) override
 
void setWriteCollection (const CollectionInterfacePrx &coll, const ::Ice::Current &=Ice::emptyCurrent) override
 
Ice::Int size (const ::Ice::Current &=Ice::emptyCurrent) const override
 size counts the number of memoryx::Entity instances contained available reachable throuhg memoryx::PersistentEntitySegment::readCollections. More...
 
void updateEntity (const ::std::string &entityId, const EntityBasePtr &update, const ::Ice::Current &=Ice::emptyCurrent) override
 
virtual void updateEntityThreadUnsafe (const ::std::string &entityId, const EntityBasePtr &update)
 
std::string upsertEntity (const std::string &entityId, const EntityBasePtr &entity, const ::Ice::Current &=Ice::emptyCurrent) override
 
std::string upsertEntityByName (const std::string &entityName, const EntityBasePtr &entity, const ::Ice::Current &=Ice::emptyCurrent) override
 
virtual std::string upsertEntityByNameThreadUnsafe (const std::string &entityName, const EntityBasePtr &entity)
 
EntityIdList upsertEntityList (const EntityBaseList &entityList, const Ice::Current &=Ice::emptyCurrent) override
 
virtual EntityIdList upsertEntityListThreadUnsafe (const EntityBaseList &entityList)
 
virtual std::string upsertEntityThreadUnsafe (const std::string &entityId, const EntityBasePtr &entity)
 
 ~PersistentEntitySegment () override
 
- Public Member Functions inherited from SegmentUtilImplementations
EntityBaseList getEntityWithChildrenById (const std::string &id, bool includeMetaEntities, const Ice::Current &c=Ice::emptyCurrent) const override
 
EntityBaseList getEntityWithChildrenByName (const std::string &, bool includeMetaEntities, const Ice::Current &c=Ice::emptyCurrent) const override
 
std::string getJSONEntityById (const std::string &id, const Ice::Current &) const override
 
ScopedSharedLockPtr getReadLock (const Ice::Current &c) const
 
ScopedUniqueLockPtr getWriteLock (const Ice::Current &c) const
 
bool keepLockAlive (const std::string &token, const Ice::Current &) override
 
SegmentLockBasePtr lockSegment (const Ice::Current &c) override
 
 SegmentUtilImplementations ()
 
bool unlockSegment (const SegmentLockBasePtr &lock, const Ice::Current &c) override
 
bool unlockSegmentWithToken (const std::string &token, const Ice::Current &c) override
 

Additional Inherited Members

- Public Types inherited from SegmentUtilImplementations
using ScopedSharedLock = std::unique_lock< std::shared_mutex >
 
using ScopedSharedLockPtr = std::unique_ptr< ScopedSharedLock >
 
using ScopedUniqueLock = std::unique_lock< std::shared_mutex >
 
using ScopedUniqueLockPtr = std::unique_ptr< ScopedSharedLock >
 
- Protected Member Functions inherited from PersistentEntitySegment
EntityBasePtr deserializeEntity (const DBStorableData &dbEntity) const
 
void setSegmentName (const std::string &segmentName, const ::Ice::Current &=Ice::emptyCurrent) override
 
- Protected Member Functions inherited from SegmentUtilImplementations
void keepAliveCheck ()
 
- Protected Attributes inherited from PersistentEntitySegment
MongoSerializerPtr dbSerializer
 
std::recursive_mutex dbSerializerMutex
 
MemoryInterfacePtr parentMemory
 
CollectionPrxList readCollections
 
std::string segmentName
 
bool useMongoIds
 
CollectionInterfacePrx writeCollection
 
- Protected Attributes inherited from SegmentUtilImplementations
armarx::PeriodicTask< SegmentUtilImplementations >::pointer_type keepAliveCheckTask
 
IceUtil::Time keepAliveTimestamp
 
std::mutex keepAliveTimestampMutex
 
std::string lockToken
 
std::mutex mutex
 
ScopedSharedLockPtr readLock
 
std::shared_mutex segmentMutex
 
EntityMemorySegmentInterfacePrx selfProxy
 
std::mutex tokenMutex
 
ScopedUniqueLockPtr writeLock
 

Detailed Description

The Graph Memory Segment contains directed graphs. The graph consists of nodes with poses and edges between them. The poses in the nodes and the edges are used for platform navigation. Additionally, thee nodes are used for symbolic planning. One segment can contain multiple graphs. They distinguished by their scene-name. See Slice API documentation for GraphMemorySegmentBase.

Definition at line 44 of file GraphMemorySegment.h.

Constructor & Destructor Documentation

◆ GraphMemorySegment()

GraphMemorySegment ( CollectionInterfacePrx  entityCollection,
Ice::CommunicatorPtr  ic,
bool  useMongoIds = true 
)

Definition at line 33 of file GraphMemorySegment.cpp.

◆ ~GraphMemorySegment()

~GraphMemorySegment ( )
override

Definition at line 39 of file GraphMemorySegment.cpp.

Member Function Documentation

◆ addEdge()

bool addEdge ( const std::string &  fromId,
const std::string &  toId,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 164 of file GraphMemorySegment.cpp.

◆ addNode()

std::string addNode ( const memoryx::GraphNodeBasePtr &  node,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 158 of file GraphMemorySegment.cpp.

◆ aStar()

memoryx::GraphNodeBaseList aStar ( const ::std::string &  idFrom,
const ::std::string &  idTo,
const ::Ice::Current &  = Ice::emptyCurrent 
)
override

TODO add some mutex

Definition at line 267 of file GraphMemorySegment.cpp.

+ Here is the call graph for this function:

◆ clearScene()

void clearScene ( const std::string &  sceneName,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 112 of file GraphMemorySegment.cpp.

◆ getAllNodes()

memoryx::GraphNodeBaseList getAllNodes ( const Ice::Current &  c = Ice::emptyCurrent)
override

Definition at line 94 of file GraphMemorySegment.cpp.

◆ getNodeById()

memoryx::GraphNodeBasePtr getNodeById ( const std::string &  entityId,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 79 of file GraphMemorySegment.cpp.

◆ getNodeByName()

memoryx::GraphNodeBasePtr getNodeByName ( const std::string &  entityName,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 89 of file GraphMemorySegment.cpp.

◆ getNodeFromSceneByName()

memoryx::GraphNodeBasePtr getNodeFromSceneByName ( const ::std::string &  sceneName,
const ::std::string &  nodeName,
const ::Ice::Current &  = Ice::emptyCurrent 
)
override

Definition at line 211 of file GraphMemorySegment.cpp.

◆ getNodesByScene()

memoryx::GraphNodeBaseList getNodesByScene ( const std::string &  sceneName,
const Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 61 of file GraphMemorySegment.cpp.

◆ getScenes()

Ice::StringSeq getScenes ( const Ice::Current &  c = Ice::emptyCurrent) const
override

Definition at line 43 of file GraphMemorySegment.cpp.

◆ hasNodeWithName()

bool hasNodeWithName ( const ::std::string &  sceneName,
const ::std::string &  nodeName,
const ::Ice::Current &  = Ice::emptyCurrent 
)
override

Definition at line 196 of file GraphMemorySegment.cpp.

◆ hasScene()

bool hasScene ( const ::std::string &  sceneName,
const ::Ice::Current &  c = Ice::emptyCurrent 
)
override

Definition at line 191 of file GraphMemorySegment.cpp.

◆ removeEdge()

bool removeEdge ( const std::string &  startNodeId,
const std::string &  endNodeId,
const Ice::Current &   
)
override

Definition at line 144 of file GraphMemorySegment.cpp.

◆ removeNode()

bool removeNode ( const std::string &  nodeId,
const Ice::Current &   
)
override

Definition at line 125 of file GraphMemorySegment.cpp.


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