Registry.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <string>
5 
7 
8 #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h>
9 #include <RobotAPI/interface/armem/server/ActionsInterface.h>
10 #include <RobotAPI/interface/armem/server/PredictingMemoryInterface.h>
11 #include <RobotAPI/interface/armem/server/ReadingMemoryInterface.h>
12 #include <RobotAPI/interface/armem/server/WritingMemoryInterface.h>
14 
15 namespace armarx::armem::mns
16 {
17 
18  /**
19  * @brief A registry for memory servers.
20  */
21  class Registry : public armarx::Logging
22  {
23  public:
24  Registry(const std::string& logTag = "MemoryNameSystem Registry");
25 
26 
27  /// Indicates whether a server entry for that name exists.
28  bool hasServer(const std::string& memoryName) const;
29 
30 
31  /**
32  * @brief Register a new memory server or update an existing entry.
33  *
34  * Causes threads waiting in `waitForMemory()` to resume if the respective
35  * memory server was added.
36  */
37  virtual dto::RegisterServerResult registerServer(const dto::RegisterServerInput& input);
38  /**
39  * @brief Remove a server entry.
40  */
41  dto::RemoveServerResult removeServer(const dto::RemoveServerInput& input);
42 
43 
44  /**
45  * @brief Gets a server entry, if it is available.
46  */
47  dto::ResolveServerResult resolveServer(const dto::ResolveServerInput& input);
48 
49  dto::GetAllRegisteredServersResult getAllRegisteredServers();
50 
51 
52  public:
53  /// Information about a memory entry.
54  struct ServerInfo
55  {
56  std::string name;
57  mns::dto::MemoryServerInterfaces server;
59  };
60 
61  /// The registered memories.
62  std::map<std::string, ServerInfo> servers;
63  };
64 
65 } // namespace armarx::armem::mns
armarx::armem::mns::Registry::resolveServer
dto::ResolveServerResult resolveServer(const dto::ResolveServerInput &input)
Gets a server entry, if it is available.
Definition: Registry.cpp:125
armarx::armem::mns::Registry::ServerInfo
Information about a memory entry.
Definition: Registry.h:54
armarx::armem::mns::Registry
A registry for memory servers.
Definition: Registry.h:21
armarx::armem::mns::Registry::ServerInfo::server
mns::dto::MemoryServerInterfaces server
Definition: Registry.h:57
armarx::armem::mns::Registry::hasServer
bool hasServer(const std::string &memoryName) const
Indicates whether a server entry for that name exists.
Definition: Registry.cpp:16
armarx::armem::mns::Registry::removeServer
dto::RemoveServerResult removeServer(const dto::RemoveServerInput &input)
Remove a server entry.
Definition: Registry.cpp:64
armarx::armem::mns::Registry::getAllRegisteredServers
dto::GetAllRegisteredServersResult getAllRegisteredServers()
Definition: Registry.cpp:107
armarx::armem::mns::Registry::ServerInfo::timeRegistered
Time timeRegistered
Definition: Registry.h:58
armarx::armem::mns::Registry::Registry
Registry(const std::string &logTag="MemoryNameSystem Registry")
Definition: Registry.cpp:10
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:12
armarx::armem::mns
Definition: MemoryNameSystem.cpp:3
armarx::core::time::DateTime
Represents a point in time.
Definition: DateTime.h:24
armarx::Logging
Base Class for all Logging classes.
Definition: Logging.h:239
armarx::armem::mns::Registry::registerServer
virtual dto::RegisterServerResult registerServer(const dto::RegisterServerInput &input)
Register a new memory server or update an existing entry.
Definition: Registry.cpp:22
armarx::armem::laser_scans::constants::memoryName
const std::string memoryName
Definition: constants.h:28
armarx::armem::mns::Registry::ServerInfo::name
std::string name
Definition: Registry.h:56
Time.h
Logging.h
armarx::armem::mns::Registry::servers
std::map< std::string, ServerInfo > servers
The registered memories.
Definition: Registry.h:62