MemoryNameSystem Class Reference

The memory name system (MNS) client. More...

#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h>

+ Inheritance diagram for MemoryNameSystem:

Public Member Functions

std::map< std::string, Configurator > getAllConfigurators () const
 Get Configurators for all registered servers (without updating).
 
std::map< std::string, Configurator > getAllConfigurators (bool update=true)
 Get Configurators for all registered servers.
 
std::map< std::string, Loader > getAllLoaders () const
 Get Loaders for all registered servers (without updating).
 
std::map< std::string, Loader > getAllLoaders (bool update=true)
 Get Loaders for all registered servers.
 
std::map< std::string, Reader > getAllReaders () const
 Get Readers for all registered servers (without updating).
 
std::map< std::string, Reader > getAllReaders (bool update=true)
 Get Readers for all registered servers.
 
std::map< std::string, Writer > getAllWriters () const
 Get Writers for all registered servers (without updating).
 
std::map< std::string, Writer > getAllWriters (bool update=true)
 Get Writers for all registered servers.
 
Configurator getConfigurator (const MemoryID &memoryID)
 Get a configurator to the given memory name.
 
Loader getLoader (const MemoryID &memoryID)
 
mns::MemoryNameSystemInterfacePrx getMemoryNameSystem () const
 
void getMemoryNameSystem (mns::MemoryNameSystemInterfacePrx mns)
 
Reader getReader (const MemoryID &memoryID)
 Get a reader to the given memory name.
 
Writer getWriter (const MemoryID &memoryID)
 Get a writer to the given memory name.
 
void initialize (mns::MemoryNameSystemInterfacePrx mns, ManagedIceObject *component=nullptr)
 
 MemoryNameSystem ()
 
 MemoryNameSystem (mns::MemoryNameSystemInterfacePrx mns, ManagedIceObject *component=nullptr)
 Construct an MNS client.
 
 operator bool () const
 Indicate whether the proxy is set.
 
void registerServer (const MemoryID &memoryID, mns::dto::MemoryServerInterfaces server)
 Register a memory server in the MNS.
 
void removeServer (const MemoryID &memoryID)
 Remove a memory server from the MNS.
 
std::optional< wm::EntityInstance > resolveEntityInstance (const MemoryID &id)
 Resolve a memory ID to an EntityInstance.
 
std::map< MemoryID, wm::EntityInstance > resolveEntityInstances (const std::vector< MemoryID > &ids)
 
mns::dto::MemoryServerInterfaces resolveServer (const MemoryID &memoryID)
 Resolve the given memory server for the given memory ID.
 
void setComponent (ManagedIceObject *component)
 
void update ()
 Update the internal registry to the data in the MNS.
 
Configurator useConfigurator (const MemoryID &memoryID)
 Use a memory server and get a configurator for it.
 
Configurator useConfigurator (const MemoryID &memoryID, ManagedIceObject &component)
 
Configurator useConfigurator (const std::string &memoryName)
 
Configurator useConfigurator (const std::string &memoryName, ManagedIceObject &component)
 
Loader useLoader (const MemoryID &memoryID)
 Use a memory server and get a configurator for it.
 
Loader useLoader (const MemoryID &memoryID, ManagedIceObject &component)
 
Loader useLoader (const std::string &memoryName)
 
Loader useLoader (const std::string &memoryName, ManagedIceObject &component)
 
Reader useReader (const MemoryID &memoryID)
 Use a memory server and get a reader for it.
 
Reader useReader (const MemoryID &memoryID, ManagedIceObject &component)
 
Reader useReader (const std::string &memoryName)
 
Reader useReader (const std::string &memoryName, ManagedIceObject &component)
 
Writer useWriter (const MemoryID &memoryID)
 Use a memory server and get a writer for it.
 
Writer useWriter (const MemoryID &memoryID, ManagedIceObject &component)
 
Writer useWriter (const std::string &memoryName)
 
Writer useWriter (const std::string &memoryName, ManagedIceObject &component)
 
- Public Member Functions inherited from MemoryListener
 MemoryListener (ManagedIceObject *component=nullptr)
 
void setComponent (ManagedIceObject *component)
 
SubscriptionHandle subscribe (const MemoryID &subscriptionID, Callback Callback)
 
SubscriptionHandle subscribe (const MemoryID &subscriptionID, CallbackUpdatedOnly Callback)
 
template<class CalleeT>
SubscriptionHandle subscribe (const MemoryID &subscriptionID, CalleeT *callee, MemberCallback< CalleeT > callback)
 Subscribe with a class member function:
 
template<class CalleeT>
SubscriptionHandle subscribe (const MemoryID &subscriptionID, CalleeT *callee, MemberCallbackUpdatedOnly< CalleeT > callback)
 
void unsubscribe (SubscriptionHandle &subscriptionHandle)
 
void updated (const std::vector< data::MemoryID > &updatedIDs) const
 
void updated (const std::vector< MemoryID > &updatedIDs) const
 Function handling updates from the MemoryListener ice topic.
 

Additional Inherited Members

- Public Types inherited from MemoryListener
using Callback
 
using CallbackUpdatedOnly
 
template<class CalleeT>
using MemberCallback
 
template<class CalleeT>
using MemberCallbackUpdatedOnly
 
- Static Public Member Functions inherited from MemoryListener
static std::string MakeMemoryTopicName (const MemoryID &memoryID)
 
- Protected Attributes inherited from MemoryListener
std::unordered_map< MemoryID, std::vector< ManagedCallback > > callbacks
 
std::unordered_map< std::string, int > memoryRefCount
 memoryName -> callbacks needing memory topic
 
long nextId = 0
 
std::mutex subscribeMutex
 

Detailed Description

The memory name system (MNS) client.

This client class serves provides the MNS interface and is a local cache of the MNS registry. It can be used to resolve memory servers by their memory ID and to construct client::Readers and client::Writers.

During server resolution, it first consults the locally cached registry. If the memory server is not known locally, the local registry is updated to that of the remote MNS before trying again.

In addition, the MNS client can be used to send queries over multiple memory servers, as well as retrieving the data for arbitrary entity or entity snapshot IDs.

Constructor & Destructor Documentation

◆ MemoryNameSystem() [1/2]

◆ MemoryNameSystem() [2/2]

MemoryNameSystem ( mns::MemoryNameSystemInterfacePrx mns,
ManagedIceObject * component = nullptr )

Construct an MNS client.

Parameters
mnsThe MNS proxy.
componentThe owning component. When using a memory server, dependencies will be added to this component.

Member Function Documentation

◆ getAllConfigurators() [1/2]

std::map< std::string, Configurator > getAllConfigurators ( ) const

Get Configurators for all registered servers (without updating).

Returns
The configurators.

◆ getAllConfigurators() [2/2]

std::map< std::string, Configurator > getAllConfigurators ( bool update = true)

Get Configurators for all registered servers.

Parameters
updateIf true, perform an update first.
Returns
The configurators.

◆ getAllLoaders() [1/2]

std::map< std::string, Loader > getAllLoaders ( ) const

Get Loaders for all registered servers (without updating).

Returns
The loaders.

◆ getAllLoaders() [2/2]

std::map< std::string, Loader > getAllLoaders ( bool update = true)

Get Loaders for all registered servers.

Parameters
updateIf true, perform an update first.
Returns
The loaders.

◆ getAllReaders() [1/2]

std::map< std::string, Reader > getAllReaders ( ) const

Get Readers for all registered servers (without updating).

Returns
The readers.

◆ getAllReaders() [2/2]

std::map< std::string, Reader > getAllReaders ( bool update = true)

Get Readers for all registered servers.

Parameters
updateIf true, perform an update first.
Returns
The readers.

◆ getAllWriters() [1/2]

std::map< std::string, Writer > getAllWriters ( ) const

Get Writers for all registered servers (without updating).

Returns
The writers.

◆ getAllWriters() [2/2]

std::map< std::string, Writer > getAllWriters ( bool update = true)

Get Writers for all registered servers.

Parameters
updateIf true, perform an update first.
Returns
The writers.

◆ getConfigurator()

Configurator getConfigurator ( const MemoryID & memoryID)

Get a configurator to the given memory name.

Parameters
memoryIDThe memory ID.
Returns
The reader.
Exceptions
`error::CouldNotResolveMemoryServer`If the memory name could not be resolved.

◆ getLoader()

Loader getLoader ( const MemoryID & memoryID)

◆ getMemoryNameSystem() [1/2]

mns::MemoryNameSystemInterfacePrx getMemoryNameSystem ( ) const

◆ getMemoryNameSystem() [2/2]

void getMemoryNameSystem ( mns::MemoryNameSystemInterfacePrx mns)

◆ getReader()

Reader getReader ( const MemoryID & memoryID)

Get a reader to the given memory name.

Parameters
memoryIDThe memory ID.
Returns
The reader.
Exceptions
`error::CouldNotResolveMemoryServer`If the memory name could not be resolved.

◆ getWriter()

Writer getWriter ( const MemoryID & memoryID)

Get a writer to the given memory name.

Parameters
memoryIDThe memory ID.
Returns
The writer.
Exceptions
`error::CouldNotResolveMemoryServer`If the memory name could not be resolved.

◆ initialize()

void initialize ( mns::MemoryNameSystemInterfacePrx mns,
ManagedIceObject * component = nullptr )

◆ operator bool()

operator bool ( ) const
inline

Indicate whether the proxy is set.

◆ registerServer()

void registerServer ( const MemoryID & memoryID,
mns::dto::MemoryServerInterfaces server )

Register a memory server in the MNS.

Parameters
memoryIDThe memoryID.
serverThe memory server proxy.
Exceptions
`error::ServerRegistrationOrRemovalFailed`If the registration failed.

◆ removeServer()

void removeServer ( const MemoryID & memoryID)

Remove a memory server from the MNS.

Parameters
memoryIDThe memoryID.
Exceptions
`error::ServerRegistrationOrRemovalFailed`If the removal failed.

◆ resolveEntityInstance()

std::optional< wm::EntityInstance > resolveEntityInstance ( const MemoryID & id)

Resolve a memory ID to an EntityInstance.

The ID can refer to an entity, an entity snapshot, or an entity instance. When not referring to an entity instance, the latest snapshot and first instance will be queried.

Parameters
idThe entity, snapshot or instance ID.
Returns

◆ resolveEntityInstances()

std::map< MemoryID, wm::EntityInstance > resolveEntityInstances ( const std::vector< MemoryID > & ids)

◆ resolveServer()

mns::dto::MemoryServerInterfaces resolveServer ( const MemoryID & memoryID)

Resolve the given memory server for the given memory ID.

Parameters
memoryIDThe memory ID.
Returns
The memory server proxy.
Exceptions
`error::CouldNotResolveMemoryServer`If the memory name could not be resolved.

◆ setComponent()

void setComponent ( ManagedIceObject * component)

◆ update()

void update ( )

Update the internal registry to the data in the MNS.

Exceptions
`error::MemoryNameSystemQueryFailed`If the call to the MNS failed.

◆ useConfigurator() [1/4]

Configurator useConfigurator ( const MemoryID & memoryID)

Use a memory server and get a configurator for it.

◆ useConfigurator() [2/4]

Configurator useConfigurator ( const MemoryID & memoryID,
ManagedIceObject & component )

◆ useConfigurator() [3/4]

Configurator useConfigurator ( const std::string & memoryName)

◆ useConfigurator() [4/4]

Configurator useConfigurator ( const std::string & memoryName,
ManagedIceObject & component )

◆ useLoader() [1/4]

Loader useLoader ( const MemoryID & memoryID)

Use a memory server and get a configurator for it.

◆ useLoader() [2/4]

Loader useLoader ( const MemoryID & memoryID,
ManagedIceObject & component )

◆ useLoader() [3/4]

Loader useLoader ( const std::string & memoryName)

◆ useLoader() [4/4]

Loader useLoader ( const std::string & memoryName,
ManagedIceObject & component )

◆ useReader() [1/4]

Reader useReader ( const MemoryID & memoryID)

Use a memory server and get a reader for it.

◆ useReader() [2/4]

Reader useReader ( const MemoryID & memoryID,
ManagedIceObject & component )

◆ useReader() [3/4]

Reader useReader ( const std::string & memoryName)

◆ useReader() [4/4]

Reader useReader ( const std::string & memoryName,
ManagedIceObject & component )

◆ useWriter() [1/4]

Writer useWriter ( const MemoryID & memoryID)

Use a memory server and get a writer for it.

◆ useWriter() [2/4]

Writer useWriter ( const MemoryID & memoryID,
ManagedIceObject & component )

◆ useWriter() [3/4]

Writer useWriter ( const std::string & memoryName)

◆ useWriter() [4/4]

Writer useWriter ( const std::string & memoryName,
ManagedIceObject & component )

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