mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-14 00:56:47 +00:00
SDK: Implement error handling for RequestCommanderInfo
This commit is contained in:
parent
363576496d
commit
377eaf2bb8
|
@ -226,20 +226,32 @@ auto DDSSession::RequestCommanderInfo() -> CommanderInfo
|
||||||
{
|
{
|
||||||
dds::tools_api::SCommanderInfoRequestData commanderInfoInfo;
|
dds::tools_api::SCommanderInfoRequestData commanderInfoInfo;
|
||||||
tools::Semaphore blocker;
|
tools::Semaphore blocker;
|
||||||
|
std::string error;
|
||||||
auto commanderInfoRequest =
|
auto commanderInfoRequest =
|
||||||
dds::tools_api::SCommanderInfoRequest::makeRequest(commanderInfoInfo);
|
dds::tools_api::SCommanderInfoRequest::makeRequest(commanderInfoInfo);
|
||||||
CommanderInfo info;
|
CommanderInfo info;
|
||||||
commanderInfoRequest->setResponseCallback(
|
commanderInfoRequest->setResponseCallback(
|
||||||
[&info](const dds::tools_api::SCommanderInfoResponseData& _response) {
|
[&info](const dds::tools_api::SCommanderInfoResponseData& _response) {
|
||||||
info.pid = _response.m_pid;
|
info.pid = _response.m_pid;
|
||||||
info.activeTopologyName = std::move(_response.m_activeTopologyName);
|
info.activeTopologyName = _response.m_activeTopologyName;
|
||||||
});
|
});
|
||||||
commanderInfoRequest->setMessageCallback(
|
commanderInfoRequest->setMessageCallback(
|
||||||
[](const dds::tools_api::SMessageResponseData& _message) { LOG(debug) << _message; });
|
[&](const dds::tools_api::SMessageResponseData& _message) {
|
||||||
|
if (_message.m_severity == dds::intercom_api::EMsgSeverity::error) {
|
||||||
|
error = _message.m_msg;
|
||||||
|
blocker.Signal();
|
||||||
|
} else {
|
||||||
|
LOG(debug) << _message;
|
||||||
|
}
|
||||||
|
});
|
||||||
commanderInfoRequest->setDoneCallback([&]() { blocker.Signal(); });
|
commanderInfoRequest->setDoneCallback([&]() { blocker.Signal(); });
|
||||||
fImpl->fSession->sendRequest<dds::tools_api::SCommanderInfoRequest>(commanderInfoRequest);
|
fImpl->fSession->sendRequest<dds::tools_api::SCommanderInfoRequest>(commanderInfoRequest);
|
||||||
blocker.Wait();
|
blocker.Wait();
|
||||||
|
|
||||||
|
if (!error.empty()) {
|
||||||
|
throw std::runtime_error(error);
|
||||||
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user