forked from Kistler-Group/sdbus-cpp
refactor: handle exceptions correctly also in match callback handlers (#386)
This is a follow-up to #375. It covers match callback handlers that were missed in #375.
This commit is contained in:
committed by
GitHub
parent
47a84ab889
commit
721f583db1
@@ -587,20 +587,20 @@ std::vector</*const */char*> Connection::to_strv(const std::vector<std::string>&
|
|||||||
return strv;
|
return strv;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Connection::sdbus_match_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error */*retError*/)
|
int Connection::sdbus_match_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError)
|
||||||
{
|
{
|
||||||
auto* matchInfo = static_cast<MatchInfo*>(userData);
|
auto* matchInfo = static_cast<MatchInfo*>(userData);
|
||||||
auto message = Message::Factory::create<PlainMessage>(sdbusMessage, &matchInfo->connection.getSdBusInterface());
|
auto message = Message::Factory::create<PlainMessage>(sdbusMessage, &matchInfo->connection.getSdBusInterface());
|
||||||
matchInfo->callback(message);
|
auto ok = invokeHandlerAndCatchErrors([&](){ matchInfo->callback(message); }, retError);
|
||||||
return 0;
|
return ok ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Connection::sdbus_match_install_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error */*retError*/)
|
int Connection::sdbus_match_install_callback(sd_bus_message *sdbusMessage, void *userData, sd_bus_error *retError)
|
||||||
{
|
{
|
||||||
auto* matchInfo = static_cast<MatchInfo*>(userData);
|
auto* matchInfo = static_cast<MatchInfo*>(userData);
|
||||||
auto message = Message::Factory::create<PlainMessage>(sdbusMessage, &matchInfo->connection.getSdBusInterface());
|
auto message = Message::Factory::create<PlainMessage>(sdbusMessage, &matchInfo->connection.getSdBusInterface());
|
||||||
matchInfo->installCallback(message);
|
auto ok = invokeHandlerAndCatchErrors([&](){ matchInfo->installCallback(message); }, retError);
|
||||||
return 0;
|
return ok ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Connection::EventFd::EventFd()
|
Connection::EventFd::EventFd()
|
||||||
|
Reference in New Issue
Block a user