summaryrefslogtreecommitdiff
path: root/AudioManagerCore/src/CAmRoutingSender.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'AudioManagerCore/src/CAmRoutingSender.cpp')
-rw-r--r--AudioManagerCore/src/CAmRoutingSender.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/AudioManagerCore/src/CAmRoutingSender.cpp b/AudioManagerCore/src/CAmRoutingSender.cpp
index 0e25e68..9cc013d 100644
--- a/AudioManagerCore/src/CAmRoutingSender.cpp
+++ b/AudioManagerCore/src/CAmRoutingSender.cpp
@@ -813,17 +813,32 @@ am_Error_e CAmRoutingSender::getListHandles(std::vector<am_Handle_s> & listHandl
am_Handle_s CAmRoutingSender::createHandle(std::shared_ptr<handleDataBase> handleData, const am_Handle_e type)
{
am_Handle_s handle;
- if (++mHandleCount>=1024) //defined by 10 bit (out if structure!)
- mHandleCount=1;
- handle.handle = mHandleCount;
handle.handleType = type;
- mlistActiveHandles.insert(std::make_pair(handle, handleData));
- if ((mlistActiveHandles.size()%100) == 0)
- {
- logInfo("CAmRoutingSender::createHandle warning: too many open handles, number of handles: ", mlistActiveHandles.size());
+
+ for (int checkOverflow=0;checkOverflow<1024;checkOverflow++)
+ {
+ if (++mHandleCount>=1024) //defined by 10 bit (out if structure!)
+ {
+ mHandleCount=1;
+ }
+ handle.handle = mHandleCount;
+
+ if ( mlistActiveHandles.find(handle) == mlistActiveHandles.end() )
+ {
+ mlistActiveHandles.insert(std::make_pair(handle, handleData));
+ if (mlistActiveHandles.size()>100)
+ {
+ logWarning(__METHOD_NAME__,"too many open handles, number of handles: ", mlistActiveHandles.size());
+ }
+ logInfo(__METHOD_NAME__,handle.handle, handle.handleType);
+ return (handle);
+ }
}
- logInfo(__METHOD_NAME__,handle.handle, handle.handleType);
- return (handle);
+
+ logError(__METHOD_NAME__,"could not create new handle, all handles in use!");
+ handle.handle=0;
+
+ return(handle);
}
void CAmRoutingSender::setRoutingReady()