From 2312c029d469fcc00bc465f44c398f6460cb51e5 Mon Sep 17 00:00:00 2001 From: Aleksandar Donchev Date: Wed, 18 Nov 2015 16:52:57 +0100 Subject: * Fix for inconsistency in CAmDatabaseHandlerMap/SQLite getListMainSinks/Sources. Another minor optimizations as well. Signed-off-by: Christian Linke --- .../include/CAmDatabaseHandlerSQLite.h | 1 + AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp | 43 ++++++++++------------ .../src/CAmDatabaseHandlerSQLite.cpp | 39 +++++++++++++++++++- .../CAmDatabaseHandlerTest.cpp | 36 +++++++++++++++++- .../test/AmMapHandlerTest/CAmMapHandlerTest.cpp | 32 ++++++++++++++++ 5 files changed, 126 insertions(+), 25 deletions(-) (limited to 'AudioManagerDaemon') diff --git a/AudioManagerDaemon/include/CAmDatabaseHandlerSQLite.h b/AudioManagerDaemon/include/CAmDatabaseHandlerSQLite.h index aac4140..c9005e3 100644 --- a/AudioManagerDaemon/include/CAmDatabaseHandlerSQLite.h +++ b/AudioManagerDaemon/include/CAmDatabaseHandlerSQLite.h @@ -156,6 +156,7 @@ public: am_Error_e getTimingInformation(const am_mainConnectionID_t mainConnectionID, am_timeSync_t& delay) const; am_Error_e getDomainOfSource(const am_sourceID_t sourceID, am_domainID_t& domainID) const; am_Error_e getDomainOfSink(const am_sinkID_t sinkID, am_domainID_t& domainID) const; + am_Error_e getDomainOfCrossfader(const am_crossfaderID_t crossfader, am_domainID_t& domainID) const; am_Error_e getSoureState(const am_sourceID_t sourceID, am_SourceState_e& sourceState) const; am_Error_e getDomainState(const am_domainID_t domainID, am_DomainState_e& state) const; am_Error_e peekDomain(const std::string& name, am_domainID_t& domainID); diff --git a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp index e9156ef..43c85d8 100644 --- a/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp +++ b/AudioManagerDaemon/src/CAmDatabaseHandlerMap.cpp @@ -1789,7 +1789,7 @@ am_Error_e CAmDatabaseHandlerMap::getListSinkClasses(std::vector listSinkClasses.clear(); std::for_each(mMappedData.mSinkClassesMap.begin(), mMappedData.mSinkClassesMap.end(), [&](const std::pair& ref) { - listSinkClasses.push_back(ref.second); + listSinkClasses.push_back(ref.second); }); return (E_OK); @@ -1798,11 +1798,10 @@ am_Error_e CAmDatabaseHandlerMap::getListSinkClasses(std::vector am_Error_e CAmDatabaseHandlerMap::getListVisibleMainConnections(std::vector & listConnections) const { listConnections.clear(); - am_MainConnectionType_s temp; std::for_each(mMappedData.mMainConnectionMap.begin(), mMappedData.mMainConnectionMap.end(), [&](const std::pair& ref) { - ref.second.getMainConnectionType(temp); - listConnections.push_back(temp); - }); + listConnections.emplace_back(); + ref.second.getMainConnectionType(listConnections.back()); + }); return (E_OK); } @@ -1810,14 +1809,13 @@ am_Error_e CAmDatabaseHandlerMap::getListVisibleMainConnections(std::vector & listMainSinks) const { listMainSinks.clear(); - am_SinkType_s sinkType; std::for_each(mMappedData.mSinkMap.begin(), mMappedData.mSinkMap.end(), [&](const std::pair& ref) { if( 0==ref.second.reserved && 1==ref.second.visible ) { - ref.second.getSinkType(sinkType); - listMainSinks.push_back(sinkType); + listMainSinks.emplace_back(); + ref.second.getSinkType(listMainSinks.back()); } - }); + }); return (E_OK); } @@ -1825,14 +1823,13 @@ am_Error_e CAmDatabaseHandlerMap::getListMainSinks(std::vector & am_Error_e CAmDatabaseHandlerMap::getListMainSources(std::vector & listMainSources) const { listMainSources.clear(); - am_SourceType_s temp; std::for_each(mMappedData.mSourceMap.begin(), mMappedData.mSourceMap.end(), [&](const std::pair& ref) { - if( 1==ref.second.visible ) + if( 0==ref.second.reserved && 1==ref.second.visible ) { - ref.second.getSourceType(temp); - listMainSources.push_back(temp); + listMainSources.emplace_back(); + ref.second.getSourceType(listMainSources.back()); } - }); + }); return (E_OK); } @@ -1843,7 +1840,7 @@ am_Error_e CAmDatabaseHandlerMap::getListMainSinkSoundProperties(const am_sinkID if (!existSink(sinkID)) return E_NON_EXISTENT; - am_Sink_s sink = mMappedData.mSinkMap.at(sinkID); + const am_Sink_s & sink = mMappedData.mSinkMap.at(sinkID); listSoundProperties = sink.listMainSoundProperties; return (E_OK); @@ -1855,7 +1852,7 @@ am_Error_e CAmDatabaseHandlerMap::getListMainSourceSoundProperties(const am_sour if (!existSource(sourceID)) return E_NON_EXISTENT; - am_Source_s source = mMappedData.mSourceMap.at(sourceID); + const am_Source_s & source = mMappedData.mSourceMap.at(sourceID); listSourceProperties = source.listMainSoundProperties; return (E_OK); @@ -1867,7 +1864,7 @@ am_Error_e CAmDatabaseHandlerMap::getListSinkSoundProperties(const am_sinkID_t s if (!existSink(sinkID)) return E_NON_EXISTENT; - am_Sink_Database_s sink = mMappedData.mSinkMap.at(sinkID); + const am_Sink_Database_s & sink = mMappedData.mSinkMap.at(sinkID); listSoundproperties = sink.listSoundProperties; return (E_OK); @@ -1879,7 +1876,7 @@ am_Error_e CAmDatabaseHandlerMap::getListSourceSoundProperties(const am_sourceID if (!existSource(sourceID)) return E_NON_EXISTENT; - am_Source_Database_s source = mMappedData.mSourceMap.at(sourceID); + const am_Source_Database_s & source = mMappedData.mSourceMap.at(sourceID); listSoundproperties = source.listSoundProperties; return (E_OK); @@ -1895,7 +1892,7 @@ am_Error_e am::CAmDatabaseHandlerMap::getListSinkConnectionFormats(const am_sink { if (!existSink(sinkID)) return E_NON_EXISTENT; - am_Sink_s sink = mMappedData.mSinkMap.at(sinkID); + const am_Sink_s & sink = mMappedData.mSinkMap.at(sinkID); listConnectionFormats = sink.listConnectionFormats; return (E_OK); @@ -1905,7 +1902,7 @@ am_Error_e am::CAmDatabaseHandlerMap::getListSourceConnectionFormats(const am_so { if (!existSource(sourceID)) return E_NON_EXISTENT; - am_Source_s source = mMappedData.mSourceMap.at(sourceID); + const am_Source_s & source = mMappedData.mSourceMap.at(sourceID); listConnectionFormats = source.listConnectionFormats; return (E_OK); @@ -1933,7 +1930,7 @@ am_Error_e CAmDatabaseHandlerMap::getTimingInformation(const am_mainConnectionID return E_NON_EXISTENT; delay = -1; - am_MainConnection_s mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID); + const am_MainConnection_s & mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID); delay = mainConnection.delay; if (delay == -1) @@ -2176,7 +2173,7 @@ am_Error_e CAmDatabaseHandlerMap::changeConnectionTimingInformation(const am_con CAmMapMainConnection::const_iterator iter = mMappedData.mMainConnectionMap.begin(); for(; iter != mMappedData.mMainConnectionMap.end(); ++iter) { - am_MainConnection_s mainConnection = iter->second; + const am_MainConnection_s & mainConnection = iter->second; if (std::find(mainConnection.listConnectionID.begin(), mainConnection.listConnectionID.end(), connectionID) != mainConnection.listConnectionID.end()) { // Got it. @@ -2204,7 +2201,7 @@ am_timeSync_t CAmDatabaseHandlerMap::calculateMainConnectionDelay(const am_mainC assert(mainConnectionID!=0); if (!existMainConnection(mainConnectionID)) return -1; - am_MainConnection_s mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID); + const am_MainConnection_s & mainConnection = mMappedData.mMainConnectionMap.at(mainConnectionID); am_timeSync_t delay = 0; std::vector::const_iterator iter = mainConnection.listConnectionID.begin(); for(;iter listSourceTypes; std::vector listSources; am_sourceID_t sourceID, source2ID, source3ID; am_Source_s source; @@ -564,25 +565,39 @@ TEST_F(CAmDatabaseHandlerTest, peekSource) //make sure it is not in the list ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_TRUE(listSources.empty()); + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.empty()); ASSERT_EQ(sourceID, DYNAMIC_ID_BOUNDARY); //now enter the source with the same name and make sure it does not get a new ID source.name = "newsource"; ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,source2ID)); + ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_EQ(sourceID, source2ID); - ASSERT_TRUE(listSources[0].sourceID==sourceID); + ASSERT_FALSE(listSources.empty()); + ASSERT_TRUE(listSources.at(0).sourceID==sourceID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_FALSE(listSourceTypes.empty()); + ASSERT_TRUE(listSourceTypes.at(0).sourceID==sourceID); //now we peek again. This time, the source exists ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(source.name,source3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_TRUE(listSources.size()==1); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.size()==1); + ASSERT_TRUE(listSourceTypes.at(0).sourceID==source3ID); ASSERT_EQ(source3ID, source2ID); } + TEST_F(CAmDatabaseHandlerTest, peekSourceDouble) { + std::vector listSourceTypes; std::vector listSources; am_sourceID_t sourceID; am_sourceID_t source2ID; @@ -609,11 +624,17 @@ TEST_F(CAmDatabaseHandlerTest, peekSourceDouble) ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,source3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_EQ(sourceID, source3ID); + ASSERT_TRUE(listSources.size()==1); ASSERT_TRUE(listSources[0].sourceID==sourceID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.size()==1); + ASSERT_TRUE(listSourceTypes[0].sourceID==source3ID); } TEST_F(CAmDatabaseHandlerTest, peekSink) { + std::vector listSinkTypes; std::vector listSinks; am_sinkID_t sinkID, sink2ID, sink3ID; am_Sink_s sink; @@ -636,15 +657,24 @@ TEST_F(CAmDatabaseHandlerTest, peekSink) ASSERT_EQ(sinkID, sink2ID); ASSERT_TRUE(listSinks[0].sinkID==sinkID); + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_FALSE(listSinkTypes.empty()); + ASSERT_TRUE(listSinkTypes.at(0).sinkID==sinkID); + //now we peek again, this time, the sink exists ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(sink.name,sink3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks)); ASSERT_TRUE(listSinks.size()==1); ASSERT_EQ(sink3ID, sink2ID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_TRUE(listSinkTypes.size()==1); + ASSERT_TRUE(listSinkTypes.at(0).sinkID==sink3ID); } TEST_F(CAmDatabaseHandlerTest, peekSinkDouble) { + std::vector listSinkTypes; std::vector listSinks; am_sinkID_t sinkID; am_sinkID_t sink2ID; @@ -672,6 +702,10 @@ TEST_F(CAmDatabaseHandlerTest, peekSinkDouble) ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks)); ASSERT_EQ(sinkID, sink3ID); ASSERT_TRUE(listSinks[0].sinkID==sinkID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_TRUE(listSinkTypes.size()==1); + ASSERT_TRUE(listSinkTypes[0].sinkID==sink3ID); } TEST_F(CAmDatabaseHandlerTest,changeConnectionTimingInformationCheckMainConnection) diff --git a/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp b/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp index 9d89c39..0f90704 100644 --- a/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp +++ b/AudioManagerDaemon/test/AmMapHandlerTest/CAmMapHandlerTest.cpp @@ -499,6 +499,7 @@ TEST_F(CAmMapHandlerTest,sourceVolumeChange) TEST_F(CAmMapHandlerTest, peekSource) { + std::vector listSourceTypes; std::vector listSources; am_sourceID_t sourceID, source2ID, source3ID; am_Source_s source; @@ -511,6 +512,8 @@ TEST_F(CAmMapHandlerTest, peekSource) //make sure it is not in the list ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_TRUE(listSources.empty()); + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.empty()); ASSERT_EQ(sourceID, DYNAMIC_ID_BOUNDARY); //now enter the source with the same name and make sure it does not get a new ID @@ -520,17 +523,27 @@ TEST_F(CAmMapHandlerTest, peekSource) ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_EQ(sourceID, source2ID); + ASSERT_FALSE(listSources.empty()); ASSERT_TRUE(listSources.at(0).sourceID==sourceID); + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_FALSE(listSourceTypes.empty()); + ASSERT_TRUE(listSourceTypes.at(0).sourceID==sourceID); + //now we peek again. This time, the source exists ASSERT_EQ(E_OK, pDatabaseHandler.peekSource(source.name,source3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_TRUE(listSources.size()==1); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.size()==1); + ASSERT_TRUE(listSourceTypes.at(0).sourceID==source3ID); ASSERT_EQ(source3ID, source2ID); } TEST_F(CAmMapHandlerTest, peekSourceDouble) { + std::vector listSourceTypes; std::vector listSources; am_sourceID_t sourceID; am_sourceID_t source2ID; @@ -557,11 +570,17 @@ TEST_F(CAmMapHandlerTest, peekSourceDouble) ASSERT_EQ(E_OK, pDatabaseHandler.enterSourceDB(source,source3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSources(listSources)); ASSERT_EQ(sourceID, source3ID); + ASSERT_TRUE(listSources.size()==1); ASSERT_TRUE(listSources[0].sourceID==sourceID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSources(listSourceTypes)); + ASSERT_TRUE(listSourceTypes.size()==1); + ASSERT_TRUE(listSourceTypes[0].sourceID==source3ID); } TEST_F(CAmMapHandlerTest, peekSink) { + std::vector listSinkTypes; std::vector listSinks; am_sinkID_t sinkID, sink2ID, sink3ID; am_Sink_s sink; @@ -584,15 +603,24 @@ TEST_F(CAmMapHandlerTest, peekSink) ASSERT_EQ(sinkID, sink2ID); ASSERT_TRUE(listSinks[0].sinkID==sinkID); + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_FALSE(listSinkTypes.empty()); + ASSERT_TRUE(listSinkTypes.at(0).sinkID==sinkID); + //now we peek again, this time, the sink exists ASSERT_EQ(E_OK, pDatabaseHandler.peekSink(sink.name,sink3ID)); ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks)); ASSERT_TRUE(listSinks.size()==1); ASSERT_EQ(sink3ID, sink2ID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_TRUE(listSinkTypes.size()==1); + ASSERT_TRUE(listSinkTypes.at(0).sinkID==sink3ID); } TEST_F(CAmMapHandlerTest, peekSinkDouble) { + std::vector listSinkTypes; std::vector listSinks; am_sinkID_t sinkID; am_sinkID_t sink2ID; @@ -620,6 +648,10 @@ TEST_F(CAmMapHandlerTest, peekSinkDouble) ASSERT_EQ(E_OK, pDatabaseHandler.getListSinks(listSinks)); ASSERT_EQ(sinkID, sink3ID); ASSERT_TRUE(listSinks[0].sinkID==sinkID); + + ASSERT_EQ(E_OK, pDatabaseHandler.getListMainSinks(listSinkTypes)); + ASSERT_TRUE(listSinkTypes.size()==1); + ASSERT_TRUE(listSinkTypes[0].sinkID==sink3ID); } TEST_F(CAmMapHandlerTest,changeConnectionTimingInformationCheckMainConnection) -- cgit v1.2.1