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

Catch connection error in Writer

parent 86d43962
No related branches found
No related tags found
2 merge requests!102ArMem Memory Updates,!100Memory QueryBuilder
......@@ -36,9 +36,10 @@ namespace armarx::armem::client
}
CommitResult Writer::commit(Commit commit)
CommitResult Writer::commit(const Commit& _commit)
{
ARMARX_CHECK_NOT_NULL(memory);
Commit commit = _commit;
Time timeSent = armem::Time::now();
for (EntityUpdate& update : commit.updates)
......@@ -47,28 +48,49 @@ namespace armarx::armem::client
}
armem::data::Commit commitIce;
armem::toIce(commitIce, commit);
toIce(commitIce, commit);
armem::data::CommitResult resultIce;
try
{
resultIce = memory->commit(commitIce);
}
catch (const Ice::NotRegisteredException& e)
armem::data::CommitResult resultIce = this->commit(commitIce);
armem::CommitResult result;
fromIce(resultIce, result);
return result;
}
data::CommitResult Writer::commit(const data::Commit& commit)
{
ARMARX_CHECK_NOT_NULL(memory);
armem::data::CommitResult result;
auto handleError = [&commit, &result](const std::string & what)
{
armem::CommitResult result;
for (const auto& _ : commit.updates)
{
(void) _;
armem::EntityUpdateResult& r = result.results.emplace_back();
armem::data::EntityUpdateResult& r = result.results.emplace_back();
r.success = false;
r.errorMessage = "Memory component not registered.\n" + std::string(e.what());
r.errorMessage = "Memory component not registered.\n" + std::string(what);
}
return result;
}
};
armem::CommitResult result;
armem::fromIce(resultIce, result);
try
{
result = memory->commit(commit);
}
catch (const Ice::ConnectionRefusedException& e)
{
handleError(e.what());
}
catch (const Ice::ConnectionLostException& e)
{
handleError(e.what());
}
catch (const Ice::NotRegisteredException& e)
{
handleError(e.what());
}
return result;
}
......
......@@ -29,7 +29,7 @@ namespace armarx::armem::client
/**
* @brief Writes a `Commit` to the memory.
*/
CommitResult commit(Commit commit);
CommitResult commit(const Commit& commit);
EntityUpdateResult commit(const EntityUpdate& update);
......@@ -38,6 +38,11 @@ namespace armarx::armem::client
return bool(memory);
}
private:
data::CommitResult commit(const data::Commit& commit);
public:
WritingInterfacePrx memory;
......
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