diff options
author | christian mueller <christian.ei.mueller@bmw.de> | 2012-04-11 17:27:46 +0200 |
---|---|---|
committer | christian mueller <christian.ei.mueller@bmw.de> | 2012-05-24 13:40:22 +0200 |
commit | 15f093000c7cb185dbcae3db7ee5827530d46fac (patch) | |
tree | de76b76d59853f5a394c8a4ffd176828e7f7a149 | |
parent | fade50454093e07b0f5739ff4935702d255d0296 (diff) | |
download | audiomanager-15f093000c7cb185dbcae3db7ee5827530d46fac.tar.gz |
* [GAM-60] wrong calculation of time in asyncRoutingPlugin
Signed-off-by: christian mueller <christian.ei.mueller@bmw.de>
-rw-r--r-- | PluginRoutingInterfaceAsync/src/CAmRoutingSenderAsync.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/PluginRoutingInterfaceAsync/src/CAmRoutingSenderAsync.cpp b/PluginRoutingInterfaceAsync/src/CAmRoutingSenderAsync.cpp index f263f7d..43de210 100644 --- a/PluginRoutingInterfaceAsync/src/CAmRoutingSenderAsync.cpp +++ b/PluginRoutingInterfaceAsync/src/CAmRoutingSenderAsync.cpp @@ -27,6 +27,8 @@ #include <dbus/dbus.h> #include "shared/CAmDltWrapper.h" +#define MAX_NS 1000000000L + using namespace am; DLT_DECLARE_CONTEXT(PluginRoutingAsync) @@ -137,11 +139,8 @@ CAmWorkerThreadPool::~CAmWorkerThreadPool() } CAmWorker::CAmWorker(CAmWorkerThreadPool *pool): -pPool(pool), mCancelSem() -{ -} - -void CAmWorker::setCancelSempaphore(sem_t* cancel) +pPool(pool), mCancelSem ( ) { } +void CAmWorker ::setCancelSempaphore ( sem_t * cancel ) { mCancelSem=cancel; } @@ -149,17 +148,23 @@ void CAmWorker::setCancelSempaphore(sem_t* cancel) bool CAmWorker::timedWait(timespec timer) { timespec temp; - if(clock_gettime(0, &temp)==-1) + if (clock_gettime(0, &temp) == -1) { logError("Worker::timedWait error on getting time"); } - temp.tv_nsec+=timer.tv_nsec; - temp.tv_sec+=timer.tv_sec; + temp.tv_nsec += timer.tv_nsec; + temp.tv_sec += timer.tv_sec; + + if (temp.tv_nsec >= MAX_NS) + { + temp.tv_sec++; + temp.tv_nsec = temp.tv_nsec - MAX_NS; + } //if(sem_wait(mCancelSem)==-1) - if (sem_timedwait(mCancelSem,&temp)==-1) - { - //a timeout happened - if(errno == ETIMEDOUT) + if (sem_timedwait(mCancelSem, &temp) == -1) + { + //a timeout happened + if (errno == ETIMEDOUT) { logInfo("Worker::timedWait timed out - no bug !"); return (false); @@ -175,8 +180,8 @@ bool CAmWorker::timedWait(timespec timer) return (true); } -CAmRoutingSenderAsync::CAmRoutingSenderAsync(): -mReceiveInterface(0), mDomains(createDomainTable()), mSinks(createSinkTable()), mSources ( createSourceTable ( ) ), mGateways ( createGatewayTable ( ) ), mMapHandleWorker ( ) , mMapConnectionIDRoute ( ) , mPool (10) +CAmRoutingSenderAsync::CAmRoutingSenderAsync() : + mReceiveInterface(0), mDomains(createDomainTable()), mSinks(createSinkTable()), mSources(createSourceTable()), mGateways(createGatewayTable()), mMapHandleWorker(), mMapConnectionIDRoute(), mPool(10) { } |