From 948c19ca79ebc6bba9e2e50d9075630880a1c633 Mon Sep 17 00:00:00 2001 From: Aleksandar Donchev Date: Fri, 6 Nov 2015 09:38:44 +0100 Subject: * Condition in CAmRoutingreceiver fixed and redundant function in CAmDatabaseHandlerMap removed. Signed-off-by: Christian Linke --- AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp | 119 +++++++---------------- AudioManagerDaemon/src/CAmRoutingReceiver.cpp | 6 +- 2 files changed, 38 insertions(+), 87 deletions(-) diff --git a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp index 8cc216d..e9156ef 100644 --- a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp +++ b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp @@ -91,43 +91,6 @@ template bool existsObjectWithKeyIn return objectForKeyIfExistsInMap(key, map)!=NULL; } -/* - * Comparators - */ -template -struct CAmComparator -{ - bool operator()(const TObject & anObject, const std::string & aValue, void *) - { - return aValue.compare(anObject.name)==0; - } -}; - -struct CAmComparatorFlag -{ - bool operator()(const CAmDatabaseHandlerMap::am_Sink_Database_s & anObject, const std::string & aValue, void *contextOrNull) - { - bool flag = (contextOrNull!=NULL)?*((bool*)contextOrNull):true; - return flag==anObject.reserved && - aValue.compare(anObject.name)==0; - - } - bool operator()(const CAmDatabaseHandlerMap::am_Connection_Database_s &anObject, const am_Connection_s &aValue, void *) - { - return 0==anObject.reserved && - aValue.sinkID == anObject.sinkID && - aValue.sourceID == anObject.sourceID && - aValue.connectionFormat == anObject.connectionFormat; - } - bool operator()(const CAmDatabaseHandlerMap::am_Source_Database_s & anObject, const std::string & aValue, void *contextOrNull) - { - bool flag = (contextOrNull!=NULL)?*((bool*)contextOrNull):true; - return flag==anObject.reserved && - aValue.compare(anObject.name)==0; - - } -}; - /** * \brief Returns an object matching predicate. * @@ -138,7 +101,7 @@ struct CAmComparatorFlag * @return NULL or pointer to the found object. */ template const TReturn * objectMatchingPredicate(const std::unordered_map & map, - std::function & comparator) + std::function comparator) { typename std::unordered_map::const_iterator elementIterator = map.begin(); for (;elementIterator != map.end(); ++elementIterator) @@ -149,28 +112,6 @@ template const TReturn * objectMatchingPr return NULL; } -/** - * \brief Returns the first object matching criteria. - * - * A common method for searching in a given map. - * - * @param aMap A map reference. - * @param aComparisonArgument An object which will be used in the comparison. - * @param aComparator A structure which defines comparison operations. - * @param context An optional user info passed to the comparators. - * @return NULL or pointer to the found object. - */ -template -TMapObjectType const * findFirstObjectMatchingCriteria(const std::unordered_map & aMap, - const TSearchObjectType & aComparisonArgument, - TComparator & aComparator, - void *context = NULL) -{ - std::function comparator = [&](const TMapObjectType & object)->bool{ - return aComparator(object, aComparisonArgument, context); - }; - return objectMatchingPredicate(aMap, comparator); -} /* Domain */ @@ -487,8 +428,9 @@ am_Error_e CAmDatabaseHandlerMap::enterDomainDB(const am_Domain_s & domainData, assert(!domainData.busname.empty()); assert(domainData.state>=DS_UNKNOWN && domainData.state<=DS_MAX); //first check for a reserved domain - CAmComparator comparator; - am_Domain_s const *reservedDomain = findFirstObjectMatchingCriteria(mMappedData.mDomainMap, domainData.name, comparator); + am_Domain_s const *reservedDomain = objectMatchingPredicate(mMappedData.mDomainMap, [&](const CAmDomain & obj){ + return domainData.name.compare(obj.name)==0; + }); int16_t nextID = 0; @@ -622,9 +564,9 @@ am_Error_e CAmDatabaseHandlerMap::enterSinkDB(const am_Sink_s & sinkData, am_sin am_sinkID_t temp_SinkID = 0; am_sinkID_t temp_SinkIndex = 0; //if sinkID is zero and the first Static Sink was already entered, the ID is created - CAmComparatorFlag comparator; - bool checkForFlag = true; - am_Sink_s const *reservedDomain = findFirstObjectMatchingCriteria(mMappedData.mSinkMap, sinkData.name, comparator, &checkForFlag); + am_Sink_s const *reservedDomain = objectMatchingPredicate(mMappedData.mSinkMap, [&](const CAmSink & obj){ + return true==obj.reserved && obj.name.compare(sinkData.name)==0; + }); if( NULL!=reservedDomain ) { am_sinkID_t oldSinkID = reservedDomain->sinkID; @@ -906,9 +848,9 @@ am_Error_e CAmDatabaseHandlerMap::enterSourceDB(const am_Source_s & sourceData, bool isFirstStatic = sourceData.sourceID == 0 && mFirstStaticSource; am_sourceID_t temp_SourceID = 0; am_sourceID_t temp_SourceIndex = 0; - bool checkForFlag = true; - CAmComparatorFlag comparator; - am_Source_Database_s const *reservedSource = findFirstObjectMatchingCriteria(mMappedData.mSourceMap, sourceData.name, comparator, &checkForFlag); + CAmSource const *reservedSource = objectMatchingPredicate(mMappedData.mSourceMap, [&](const CAmSource & obj){ + return true==obj.reserved && obj.name.compare(sourceData.name)==0; + }); if( NULL != reservedSource ) { am_sourceID_t oldSourceID = reservedSource->sourceID; @@ -2324,8 +2266,12 @@ bool CAmDatabaseHandlerMap::sinkVisible(const am_sinkID_t sinkID) const */ bool CAmDatabaseHandlerMap::existConnection(const am_Connection_s & connection) const { - CAmComparatorFlag comparator; - am_Connection_Database_s const * connectionObject = findFirstObjectMatchingCriteria(mMappedData.mConnectionMap, connection, comparator); + am_Connection_Database_s const * connectionObject = objectMatchingPredicate(mMappedData.mConnectionMap, [&](const am_Connection_Database_s & obj){ + return false==obj.reserved && + connection.sinkID == obj.sinkID && + connection.sourceID == obj.sourceID && + connection.connectionFormat == obj.connectionFormat; + }); return ( NULL!=connectionObject ); } @@ -2536,8 +2482,9 @@ am_Error_e CAmDatabaseHandlerMap::peekDomain(const std::string & name, am_domain { domainID=0; - CAmComparator comparator; - am_Domain_Database_s const *reservedDomain = findFirstObjectMatchingCriteria(mMappedData.mDomainMap, name, comparator); + am_Domain_Database_s const *reservedDomain = objectMatchingPredicate(mMappedData.mDomainMap, [&](const am_Domain_Database_s & obj){ + return name.compare(obj.name)==0; + }); if( NULL != reservedDomain ) { @@ -2564,8 +2511,9 @@ am_Error_e CAmDatabaseHandlerMap::peekDomain(const std::string & name, am_domain am_Error_e CAmDatabaseHandlerMap::peekSink(const std::string & name, am_sinkID_t & sinkID) { - CAmComparator comparator; - am_Sink_Database_s const *reservedSink = findFirstObjectMatchingCriteria(mMappedData.mSinkMap, name, comparator); + am_Sink_Database_s const *reservedSink = objectMatchingPredicate(mMappedData.mSinkMap, [&](const am_Sink_Database_s & obj){ + return name.compare(obj.name)==0; + }); if( NULL!=reservedSink ) { sinkID = reservedSink->sinkID; @@ -2595,11 +2543,12 @@ am_Error_e CAmDatabaseHandlerMap::peekSink(const std::string & name, am_sinkID_t am_Error_e CAmDatabaseHandlerMap::peekSource(const std::string & name, am_sourceID_t & sourceID) { - CAmComparator comparator; - am_Source_Database_s const *reservedDomain = findFirstObjectMatchingCriteria(mMappedData.mSourceMap, name, comparator); - if( NULL!=reservedDomain ) + am_Source_Database_s const *reservedSrc = objectMatchingPredicate(mMappedData.mSourceMap, [&](const am_Source_Database_s & obj){ + return name.compare(obj.name)==0; + }); + if( NULL!=reservedSrc ) { - sourceID = reservedDomain->sourceID; + sourceID = reservedSrc->sourceID; return E_OK; } else @@ -2727,11 +2676,12 @@ am_Error_e am::CAmDatabaseHandlerMap::peekSinkClassID(const std::string & name, { if (name.empty()) return (E_NON_EXISTENT); - CAmComparator comparator; - am_SinkClass_Database_s const *reservedDomain = findFirstObjectMatchingCriteria(mMappedData.mSinkClassesMap, name, comparator); - if( NULL!=reservedDomain ) + am_SinkClass_Database_s const *reserved = objectMatchingPredicate(mMappedData.mSinkClassesMap, [&](const am_SinkClass_Database_s & obj){ + return name.compare(obj.name)==0; + }); + if( NULL!=reserved ) { - sinkClassID = reservedDomain->sinkClassID; + sinkClassID = reserved->sinkClassID; return E_OK; } return (E_NON_EXISTENT); @@ -2741,8 +2691,9 @@ am_Error_e am::CAmDatabaseHandlerMap::peekSourceClassID(const std::string & name { if (name.empty()) return (E_NON_EXISTENT); - CAmComparator comparator; - am_SourceClass_Database_s const *ptrSource = findFirstObjectMatchingCriteria(mMappedData.mSourceClassesMap, name, comparator); + am_SourceClass_Database_s const *ptrSource = objectMatchingPredicate(mMappedData.mSourceClassesMap, [&](const am_SourceClass_Database_s & obj){ + return name.compare(obj.name)==0; + }); if( NULL!=ptrSource ) { sourceClassID = ptrSource->sourceClassID; diff --git a/AudioManagerDaemon/src/CAmRoutingReceiver.cpp b/AudioManagerDaemon/src/CAmRoutingReceiver.cpp index 1c20d5c..4189936 100644 --- a/AudioManagerDaemon/src/CAmRoutingReceiver.cpp +++ b/AudioManagerDaemon/src/CAmRoutingReceiver.cpp @@ -112,7 +112,7 @@ void CAmRoutingReceiver::ackSetSinkVolumeChange(const am_Handle_s handle, const return; } - if (error== am_Error_e::E_OK || am_Error_e::E_ABORTED) + if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED) { mpDatabaseHandler->changeSinkVolume(handleData.sinkID, volume); } @@ -133,14 +133,14 @@ void CAmRoutingReceiver::ackSetSourceVolumeChange(const am_Handle_s handle, cons return; } - if (error== am_Error_e::E_OK || am_Error_e::E_ABORTED) + if (error== am_Error_e::E_OK || error== am_Error_e::E_ABORTED) { mpDatabaseHandler->changeSourceVolume(handleData.sourceID, volume); } if(error == E_OK || handleData.volume!=volume) { - logError("ackSetSourceVolumeChange volumes do not match, requested volume",handleData.volume,"returned volume",volume); + logError("ackSetSourceVolumeChange volumes do not match, requested volume",handleData.volume,"returned volume",volume); } mpControlSender->cbAckSetSourceVolumeChange(handle, volume, error); } -- cgit v1.2.1