Skip to content
Snippets Groups Projects
Commit 4a83c880 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add memory server registration and removal

parent 286344c8
No related branches found
No related tags found
3 merge requests!171Periodic merge of armem/dev into master,!170ArMem Viewer: Resolve Memory IDs,!163Draft: Resolve "Implement MemoryNameSystemClient"
......@@ -44,16 +44,16 @@ namespace armarx::armem::error
}
MemoryServerRegistrationFailed::MemoryServerRegistrationFailed(const MemoryID& memoryID, const std::string& errorMessage) :
ArMemError(makeMsg(memoryID, errorMessage))
ServerRegistrationOrRemovalFailed::ServerRegistrationOrRemovalFailed(const std::string& verb, const MemoryID& memoryID, const std::string& errorMessage) :
ArMemError(makeMsg(verb, memoryID, errorMessage))
{
}
std::string MemoryServerRegistrationFailed::makeMsg(const MemoryID& memoryID, const std::string& errorMessage)
std::string ServerRegistrationOrRemovalFailed::makeMsg(const std::string& verb, const MemoryID& memoryID, const std::string& errorMessage)
{
std::stringstream ss;
ss << "Failed to register memory server for '" << memoryID << "' in the Memory Name System (MNS).";
ss << "Failed to " << verb << " memory server for '" << memoryID << "' in the Memory Name System (MNS).";
if (not errorMessage.empty())
{
ss << "\n" << errorMessage;
......
......@@ -37,15 +37,16 @@ namespace armarx::armem::error
/**
* @brief Indicates that a query to the Memory Name System failed.
*/
class MemoryServerRegistrationFailed : public ArMemError
class ServerRegistrationOrRemovalFailed : public ArMemError
{
public:
MemoryServerRegistrationFailed(const MemoryID& memoryID, const std::string& errorMessage = "");
ServerRegistrationOrRemovalFailed(const std::string& verb, const MemoryID& memoryID, const std::string& errorMessage = "");
static std::string makeMsg(const MemoryID& memoryID, const std::string& errorMessage = "");
static std::string makeMsg(const std::string& verb, const MemoryID& memoryID, const std::string& errorMessage = "");
};
}
......@@ -135,7 +135,7 @@ namespace armarx::armem::mns
client::Writer Client::getWriter(const MemoryID& memoryID)
{
client::Writer(resolveServer(memoryID));
return client::Writer(resolveServer(memoryID));
}
......@@ -161,7 +161,20 @@ namespace armarx::armem::mns
data::RegisterMemoryResult result = mns->registerMemory(input);
if (!result.success)
{
throw error::MemoryServerRegistrationFailed(memoryID, result.errorMessage);
throw error::ServerRegistrationOrRemovalFailed("register", memoryID, result.errorMessage);
}
}
void Client::removeServer(const MemoryID& memoryID)
{
data::RemoveMemoryInput input;
input.name = memoryID.memoryName;
data::RemoveMemoryResult result = mns->removeMemory(input);
if (!result.success)
{
throw error::ServerRegistrationOrRemovalFailed("remove", memoryID, result.errorMessage);
}
}
......
......@@ -118,7 +118,19 @@ namespace armarx::armem::mns
*/
client::Reader getReader(const MemoryID& memoryID);
/**
* @brief Get Readers for all registered servers.
*
* @param update If true, perform an update first.
* @return The readers.
*/
std::map<std::string, client::Reader> getAllReaders(bool update = true);
/**
* @brief Get Readers for all registered servers.
*
* @param update If true, perform an update first.
* @return The readers.
*/
std::map<std::string, client::Reader> getAllReaders() const;
......@@ -132,7 +144,18 @@ namespace armarx::armem::mns
*/
client::Writer getWriter(const MemoryID& memoryID);
/**
* @brief Get Writers for all registered servers.
*
* @param update If true, perform an update first.
* @return The readers.
*/
std::map<std::string, client::Writer> getAllWriters(bool update = true);
/**
* @brief Get Writers for all registered servers.
*
* @return The readers.
*/
std::map<std::string, client::Writer> getAllWriters() const;
......@@ -144,10 +167,19 @@ namespace armarx::armem::mns
* @param memoryID The memoryID.
* @param server The memory server proxy.
*
* @throw `error::MemoryServerRegistrationFailed` If the registration failed.
* @throw `error::ServerRegistrationOrRemovalFailed` If the registration failed.
*/
void registerServer(const MemoryID& memoryID, server::MemoryInterfacePrx server);
/**
* @brief Remove a memory server from the MNS.
*
* @param memoryID The memoryID.
*
* @throw `error::ServerRegistrationOrRemovalFailed` If the removal failed.
*/
void removeServer(const MemoryID& memoryID);
// Operators
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment