diff options
author | Jens Lorenz <jlorenz@de.adit-jv.com> | 2018-03-27 11:35:18 +0200 |
---|---|---|
committer | Jens Lorenz <jlorenz@de.adit-jv.com> | 2018-04-09 17:00:47 +0200 |
commit | 8dd6a05689138a7cbb38f99ef775fe27df614f52 (patch) | |
tree | da707c1487bf6dd222c7931f585927a4b58cfe2c | |
parent | 2b8be69fed9add7b9647be6edaaebcf7119ebd95 (diff) | |
download | audiomanager-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.cpp | 32 |
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); } |