From 84d0506d308be29b257fd80071d288e229789115 Mon Sep 17 00:00:00 2001 From: Christian Linke Date: Tue, 30 Aug 2016 09:47:30 -0700 Subject: Improved the changes. Cleared wrongly issued errors. Signed-off-by: Christian Linke --- AudioManagerCore/include/CAmRoutingSender.h | 16 ++++++++++------ AudioManagerCore/src/CAmControlSender.cpp | 4 ++-- AudioManagerCore/src/CAmRoutingReceiver.cpp | 15 +++++++++------ AudioManagerCore/src/CAmRoutingSender.cpp | 22 ++++++++++++++++++---- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/AudioManagerCore/include/CAmRoutingSender.h b/AudioManagerCore/include/CAmRoutingSender.h index 7bced64..8804d90 100644 --- a/AudioManagerCore/include/CAmRoutingSender.h +++ b/AudioManagerCore/include/CAmRoutingSender.h @@ -223,25 +223,29 @@ public: class handleConnect : public handleDataBase { public: - handleConnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler) : + handleConnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler) : handleDataBase(interface,databaseHandler) - ,mConnectionID(connectionID) {} - ~handleConnect() {} + ,mConnectionID(connectionID) + ,mConnectionPending(true) {} + ~handleConnect(); am_Error_e writeDataToDatabase(); private: am_connectionID_t mConnectionID; + bool mConnectionPending; }; class handleDisconnect : public handleDataBase { public: - handleDisconnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler) : + handleDisconnect(IAmRoutingSend* interface, const am_connectionID_t connectionID, IAmDatabaseHandler* databaseHandler,CAmRoutingSender* routingSender) : handleDataBase(interface,databaseHandler) - ,mConnectionID(connectionID) {} - ~handleDisconnect() {} + ,mConnectionID(connectionID) + ,mRoutingSender(routingSender){} + ~handleDisconnect(); am_Error_e writeDataToDatabase(); private: am_connectionID_t mConnectionID; + CAmRoutingSender* mRoutingSender; }; class handleSetVolumes : public handleDataBase diff --git a/AudioManagerCore/src/CAmControlSender.cpp b/AudioManagerCore/src/CAmControlSender.cpp index 1ca4500..a12373c 100644 --- a/AudioManagerCore/src/CAmControlSender.cpp +++ b/AudioManagerCore/src/CAmControlSender.cpp @@ -127,9 +127,9 @@ CAmControlSender::CAmControlSender(std::string controlPluginFile,CAmSocketHandle - if (majorVersion < cMajorVersion || ((majorVersion == cMajorVersion) && (minorVersion > cMinorVersion))) + if (majorVersion < cMajorVersion || ((majorVersion == cMajorVersion) && (minorVersion < cMinorVersion))) { - logError("ControlSender::ControlSender: Interface Version of Controller too old, exiting now"); + logError("ControlSender::ControlSender: Interface Version of Controller too old, required version:",ControlVersion," Controller Version:",version,"exiting now"); throw std::runtime_error("Interface Version of Controller too old"); } } diff --git a/AudioManagerCore/src/CAmRoutingReceiver.cpp b/AudioManagerCore/src/CAmRoutingReceiver.cpp index 15b0f6a..103d35c 100644 --- a/AudioManagerCore/src/CAmRoutingReceiver.cpp +++ b/AudioManagerCore/src/CAmRoutingReceiver.cpp @@ -113,9 +113,8 @@ void CAmRoutingReceiver::ackDisconnect(const am_Handle_s handle, const am_connec { logInfo(__func__,"handle=",handle,"connectionID=",connectionID,"error=",error); //only remove connection of handle was found - if(mpRoutingSender->removeHandle(handle)==0) + if(mpRoutingSender->removeHandle(handle) == 0) { - mpDatabaseHandler->removeConnection(connectionID); mpRoutingSender->removeConnectionLookup(connectionID); } mpControlSender->cbAckDisconnect(handle, error); @@ -133,8 +132,10 @@ void CAmRoutingReceiver::ackSetSinkVolumeChange(const am_Handle_s handle, const { mpRoutingSender->writeToDatabaseAndRemove(handle); } - - mpRoutingSender->removeHandle(handle); + else + { + mpRoutingSender->removeHandle(handle); + } mpControlSender->cbAckSetSinkVolumeChange(handle, volume, error); } @@ -150,8 +151,10 @@ void CAmRoutingReceiver::ackSetSourceVolumeChange(const am_Handle_s handle, cons { mpRoutingSender->writeToDatabaseAndRemove(handle); } - - mpRoutingSender->removeHandle(handle); + else + { + mpRoutingSender->removeHandle(handle); + } mpControlSender->cbAckSetSourceVolumeChange(handle, volume, error); } diff --git a/AudioManagerCore/src/CAmRoutingSender.cpp b/AudioManagerCore/src/CAmRoutingSender.cpp index 6dfc00a..93d5894 100644 --- a/AudioManagerCore/src/CAmRoutingSender.cpp +++ b/AudioManagerCore/src/CAmRoutingSender.cpp @@ -289,7 +289,7 @@ am_Error_e CAmRoutingSender::asyncDisconnect(am_Handle_s& handle, const am_conne } else { - auto handleData = std::make_shared(iter->second,connectionID,mpDatabaseHandler); + auto handleData = std::make_shared(iter->second,connectionID,mpDatabaseHandler,this); handle = createHandle(handleData, am_Handle_e::H_DISCONNECT); } @@ -1076,7 +1076,6 @@ am_Error_e CAmRoutingSender::handleSinkVolume::writeDataToDatabase() return (mpDatabaseHandler->changeSinkVolume(mSinkID,returnVolume())); } - am_Error_e CAmRoutingSender::handleCrossFader::writeDataToDatabase() { return (mpDatabaseHandler->changeCrossFaderHotSink(mCrossfaderID, mHotSink)); @@ -1084,6 +1083,7 @@ am_Error_e CAmRoutingSender::handleCrossFader::writeDataToDatabase() am_Error_e CAmRoutingSender::handleConnect::writeDataToDatabase() { + mConnectionPending = false; return (mpDatabaseHandler->changeConnectionFinal(mConnectionID)); } @@ -1100,13 +1100,14 @@ am_Error_e CAmRoutingSender::handleSetVolumes::writeDataToDatabase() { if (iterator->volumeType==VT_SINK) { - mpDatabaseHandler->changeSinkVolume(iterator->volumeID.sink,iterator->volume); + return (mpDatabaseHandler->changeSinkVolume(iterator->volumeID.sink,iterator->volume)); } else if (iterator->volumeType==VT_SOURCE) { - mpDatabaseHandler->changeSourceVolume(iterator->volumeID.source,iterator->volume); + return (mpDatabaseHandler->changeSourceVolume(iterator->volumeID.source,iterator->volume)); } } + return (am_Error_e::E_WRONG_FORMAT); } am_Error_e CAmRoutingSender::handleSetSinkNotificationConfiguration::writeDataToDatabase() @@ -1131,5 +1132,18 @@ am_Error_e CAmRoutingSender::removeConnectionLookup(const am_connectionID_t conn return (E_UNKNOWN); } +CAmRoutingSender::handleConnect::~handleConnect() +{ + if (mConnectionPending) + { + mpDatabaseHandler->removeConnection(mConnectionID); + } +} + +CAmRoutingSender::handleDisconnect::~handleDisconnect() +{ + mRoutingSender->removeConnectionLookup(mConnectionID); +} + } -- cgit v1.2.1