summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Lorenz <jlorenz@de.adit-jv.com>2018-03-27 11:35:18 +0200
committerJens Lorenz <jlorenz@de.adit-jv.com>2018-04-09 17:00:47 +0200
commit8dd6a05689138a7cbb38f99ef775fe27df614f52 (patch)
treeda707c1487bf6dd222c7931f585927a4b58cfe2c
parent2b8be69fed9add7b9647be6edaaebcf7119ebd95 (diff)
downloadaudiomanager-8dd6a05689138a7cbb38f99ef775fe27df614f52.tar.gz
AMUtil: Rework of listenToSignal and minor improvements
Signed-off-by: Jens Lorenz <jlorenz@de.adit-jv.com>
-rw-r--r--AudioManagerUtilities/src/CAmSocketHandler.cpp32
1 files changed, 15 insertions, 17 deletions
diff --git a/AudioManagerUtilities/src/CAmSocketHandler.cpp b/AudioManagerUtilities/src/CAmSocketHandler.cpp
index 0ffe6eb..c5ce8d3 100644
--- a/AudioManagerUtilities/src/CAmSocketHandler.cpp
+++ b/AudioManagerUtilities/src/CAmSocketHandler.cpp
@@ -287,31 +287,19 @@ am_Error_e CAmSocketHandler::listenToSignals(const std::vector<uint8_t> & listSi
return (E_NOT_POSSIBLE);
}
- int signalHandlerFd;
+ sh_poll_s sgPollData;
if(mSignalFdHandle)
{
- sh_poll_s sgPollData;
if(E_OK!=getFDPollData(mSignalFdHandle, sgPollData))
{
- removeFDPoll(mSignalFdHandle);
- mSignalFdHandle = 0;
- }
- else
- {
- int signalHandlerFd = signalfd(sgPollData.pollfdValue.fd, &sigset, 0);
- if (signalHandlerFd == -1)
- {
- logError("Could not update signal fd!");
- return (E_NOT_POSSIBLE);
- }
- return E_OK;
+ mSignalFdHandle = 0;
}
}
if(0==mSignalFdHandle)
{
/* Create the signalfd */
- signalHandlerFd = signalfd(-1, &sigset, 0);
+ int signalHandlerFd = signalfd(-1, &sigset, SFD_NONBLOCK);
if (signalHandlerFd == -1)
{
logError("Could not open signal fd!");
@@ -345,6 +333,16 @@ am_Error_e CAmSocketHandler::listenToSignals(const std::vector<uint8_t> & listSi
return addFDPoll(signalHandlerFd, POLLIN | POLLERR | POLLHUP, NULL, actionPoll,
[](const sh_pollHandle_t, void*) { return (false); }, NULL, NULL, mSignalFdHandle);
}
+ else
+ {
+ int signalHandlerFd = signalfd(sgPollData.pollfdValue.fd, &sigset, 0);
+ if (signalHandlerFd == -1)
+ {
+ logError("Could not update signal fd!", std::strerror(errno));
+ return (E_NOT_POSSIBLE);
+ }
+ return E_OK;
+ }
}
/**
@@ -459,7 +457,7 @@ am_Error_e CAmSocketHandler::addSignalHandler(std::function<void(const sh_pollHa
{
if (!nextHandle(mSetSignalhandlerKeys))
{
- logError("Could not create new polls, too many open!");
+ logError("CAmSocketHandler::addSignalHandler Could not create new polls, too many open!");
return (E_NOT_POSSIBLE);
}
@@ -484,7 +482,7 @@ am_Error_e CAmSocketHandler::removeSignalHandler(const sh_pollHandle_t handle)
{
if (it->handle == handle)
{
- it = mSignalHandlers.erase(it);
+ mSignalHandlers.erase(it);
mSetSignalhandlerKeys.pollHandles.erase(handle);
return (E_OK);
}