harvester/monitorplugins/fileplugin/src/processoriginmapper.cpp
branchRCL_3
changeset 9 82c0024438c8
parent 3 6752808b2036
child 19 b73252188534
--- a/harvester/monitorplugins/fileplugin/src/processoriginmapper.cpp	Wed Mar 31 22:19:07 2010 +0300
+++ b/harvester/monitorplugins/fileplugin/src/processoriginmapper.cpp	Wed Apr 14 16:24:03 2010 +0300
@@ -99,7 +99,7 @@
     if ( index < 0 ) // not found
         {
         TProcessOriginPair pair = { aProcessId, aOrigin };
-        iProcessOriginMap.AppendL( pair );
+        User::LeaveIfError( iProcessOriginMap.InsertInOrder(pair, TLinearOrder<TProcessOriginPair>(CProcessOriginMapper::Compare))); 
         }
     else if ( index < iProcessOriginMap.Count() )
         {
@@ -320,12 +320,25 @@
 //
 TInt CProcessOriginMapper::FindProcess( const TUid& aProcessId )
     {
-    const TInt count = iProcessOriginMap.Count();
-    for ( TInt i( 0 ); i < count; i++ )
+    TInt low( 0 );
+    TInt high( iProcessOriginMap.Count() );
+    
+    while( low < high )
         {
-        if ( iProcessOriginMap[i].iProcessId == aProcessId )
+        TInt mid( (low+high)>>1 );
+        
+        const TInt compare( aProcessId.iUid - iProcessOriginMap[mid].iProcessId.iUid );
+        if( compare == 0 )
             {
-            return i;
+            return mid;
+            }
+        else if( compare > 0 )
+            {
+            low = mid + 1;
+            }
+        else
+            {
+            high = mid;
             }
         }
 
@@ -419,3 +432,8 @@
     iWriteStream.WriteL( KLineFeed );
     }
 
+TInt CProcessOriginMapper::Compare(const TProcessOriginPair& aFirst, const TProcessOriginPair& aSecond)
+    {
+    return aFirst.iProcessId.iUid - aSecond.iProcessId.iUid;
+    }
+