diff options
Diffstat (limited to 'AudioManagerDaemon/src/CAmSocketHandler.cpp')
-rw-r--r-- | AudioManagerDaemon/src/CAmSocketHandler.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/AudioManagerDaemon/src/CAmSocketHandler.cpp b/AudioManagerDaemon/src/CAmSocketHandler.cpp index 9bef60e..f7c4ace 100644 --- a/AudioManagerDaemon/src/CAmSocketHandler.cpp +++ b/AudioManagerDaemon/src/CAmSocketHandler.cpp @@ -34,16 +34,33 @@ namespace am { +CAmSocketHandler* CAmSocketHandler::mInstance=NULL; + CAmSocketHandler::CAmSocketHandler() : + mPipe(), mListPoll(), // mListTimer(), // mListActiveTimer(), // mLastInsertedHandle(0), // mLastInsertedPollHandle(0), // mRecreatePollfds(true), // - mStartTime() + mStartTime(), // + receiverCallbackT(this, &CAmSocketHandler::receiverCallback),// + checkerCallbackT(this, &CAmSocketHandler::checkerCallback)// { gDispatchDone = 1; + mInstance=this; + + if (pipe(mPipe) == -1) + { + logError("CAmSerializer could not create pipe!"); + } + + //add the pipe to the poll - nothing needs to be proccessed here we just need the pipe to trigger the ppoll + short event = 0; + sh_pollHandle_t handle; + event |= POLLIN; + addFDPoll(mPipe[0], event, NULL, &receiverCallbackT, &checkerCallbackT, NULL, NULL, handle); } CAmSocketHandler::~CAmSocketHandler() @@ -500,6 +517,24 @@ void CAmSocketHandler::timerCorrection() } } +void CAmSocketHandler::exit_mainloop() +{ + //end the while loop + stop_listening(); + + //fire the ending filedescriptor + int p(1); + write(mPipe[1], &p, sizeof(p)); +} + +void CAmSocketHandler::static_exit_mainloop() +{ + if (mInstance!=0) + { + mInstance->exit_mainloop(); + } +} + /** * is used to set the pointer for the ppoll command * @param buffertime |