diff options
author | Martin Koch <martin.koch@ese.de> | 2020-06-26 12:21:50 +0200 |
---|---|---|
committer | Martin Koch <martin.koch@ese.de> | 2020-06-29 08:01:30 +0200 |
commit | 493c514c619c794fac433b45750851ff558a2da1 (patch) | |
tree | b95d2f7c5abee8c51019c0bb9e52c3ce10c26f20 /AudioManagerCore/src/CAmRoutingReceiver.cpp | |
parent | 7f9c4d8732d37da5ac5d383def24c30ae2f787e1 (diff) | |
download | audiomanager-EarlyAudio-rebased.tar.gz |
AM: change handling or registerEarlyConnectionEarlyAudio-rebased
- use type am_Route_s for announcement from routing side
- register also main connection internally
- forward route details to controller
Signed-off-by: Martin Koch <martin.koch@ese.de>
Diffstat (limited to 'AudioManagerCore/src/CAmRoutingReceiver.cpp')
-rw-r--r-- | AudioManagerCore/src/CAmRoutingReceiver.cpp | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/AudioManagerCore/src/CAmRoutingReceiver.cpp b/AudioManagerCore/src/CAmRoutingReceiver.cpp index 8f4d1ba..29aea65 100644 --- a/AudioManagerCore/src/CAmRoutingReceiver.cpp +++ b/AudioManagerCore/src/CAmRoutingReceiver.cpp @@ -247,37 +247,58 @@ am_Error_e CAmRoutingReceiver::deregisterDomain(const am_domainID_t domainID) } am_Error_e CAmRoutingReceiver::registerEarlyConnection(am_domainID_t domainID - , const std::vector< am_Connection_s > &route, am_ConnectionState_e state) + , const am_Route_s &route, am_ConnectionState_e state) { - if (route.size() < 1) + const auto &segmentList = route.route; + if (segmentList.size() < 1) { - logWarning(__METHOD_NAME__, "route empty"); + logError(__METHOD_NAME__, "empty route from domain", domainID); return E_NOT_POSSIBLE; } am_MainConnection_s mainConnectionData; - mainConnectionData.sourceID = route.front().sourceID; - mainConnectionData.sinkID = route.back().sinkID; + mainConnectionData.sourceID = segmentList.front().sourceID; + mainConnectionData.sinkID = segmentList.back().sinkID; mainConnectionData.connectionState = state; - mainConnectionData.listConnectionID.reserve(route.size()); - for (auto & conn : route) + mainConnectionData.listConnectionID.reserve(segmentList.size()); + for (const auto &segment : segmentList) { - am_connectionID_t connectionID; - am_Error_e success = mpDatabaseHandler->enterConnectionDB(conn, connectionID); + am_Connection_s conn; + conn.sourceID = segment.sourceID; + conn.sinkID = segment.sinkID; + conn.connectionFormat = segment.connectionFormat; + conn.connectionID = 0; + am_Error_e success = mpDatabaseHandler->enterConnectionDB(conn, conn.connectionID); switch (success) { case E_OK: case E_ALREADY_EXISTS: case E_NO_CHANGE: - mainConnectionData.listConnectionID.push_back(connectionID); + mainConnectionData.listConnectionID.push_back(conn.connectionID); break; default: + logError(__METHOD_NAME__, "failed to enter connection segment", conn.sourceID + , "to", conn.sinkID, "from domain", domainID, "error=", success); return success; } } - return mpControlSender->hookSystemRegisterEarlyConnection(domainID, mainConnectionData); + am_Error_e success = mpDatabaseHandler->enterMainConnectionDB(mainConnectionData, mainConnectionData.mainConnectionID); + switch (success) + { + case E_OK: + case E_ALREADY_EXISTS: + case E_NO_CHANGE: + break; + + default: + logError(__METHOD_NAME__, "failed to enter main connection", mainConnectionData.sourceID + , "to", mainConnectionData.sinkID, "from domain", domainID, "error=", success); + return success; + } + + return mpControlSender->hookSystemRegisterEarlyConnection(domainID, mainConnectionData, route); } am_Error_e CAmRoutingReceiver::registerGateway(const am_Gateway_s &gatewayData, am_gatewayID_t &gatewayID) |