harvester/monitorplugins/fileplugin/src/processoriginmapper.cpp
branchRCL_3
changeset 9 82c0024438c8
parent 3 6752808b2036
child 19 b73252188534
equal deleted inserted replaced
8:50de4d668bb6 9:82c0024438c8
    97     WRITELOG2( "CProcessOriginMapper::RegisterProcessL - processId: 0x%.8x, origin: %d", aProcessId.iUid, (TInt)aOrigin );
    97     WRITELOG2( "CProcessOriginMapper::RegisterProcessL - processId: 0x%.8x, origin: %d", aProcessId.iUid, (TInt)aOrigin );
    98     const TInt index = FindProcess( aProcessId );
    98     const TInt index = FindProcess( aProcessId );
    99     if ( index < 0 ) // not found
    99     if ( index < 0 ) // not found
   100         {
   100         {
   101         TProcessOriginPair pair = { aProcessId, aOrigin };
   101         TProcessOriginPair pair = { aProcessId, aOrigin };
   102         iProcessOriginMap.AppendL( pair );
   102         User::LeaveIfError( iProcessOriginMap.InsertInOrder(pair, TLinearOrder<TProcessOriginPair>(CProcessOriginMapper::Compare))); 
   103         }
   103         }
   104     else if ( index < iProcessOriginMap.Count() )
   104     else if ( index < iProcessOriginMap.Count() )
   105         {
   105         {
   106         iProcessOriginMap[index].iOrigin = aOrigin;
   106         iProcessOriginMap[index].iOrigin = aOrigin;
   107         }
   107         }
   318 // Find index by process id.
   318 // Find index by process id.
   319 //-----------------------------------------------------------------------------
   319 //-----------------------------------------------------------------------------
   320 //
   320 //
   321 TInt CProcessOriginMapper::FindProcess( const TUid& aProcessId )
   321 TInt CProcessOriginMapper::FindProcess( const TUid& aProcessId )
   322     {
   322     {
   323     const TInt count = iProcessOriginMap.Count();
   323     TInt low( 0 );
   324     for ( TInt i( 0 ); i < count; i++ )
   324     TInt high( iProcessOriginMap.Count() );
   325         {
   325     
   326         if ( iProcessOriginMap[i].iProcessId == aProcessId )
   326     while( low < high )
   327             {
   327         {
   328             return i;
   328         TInt mid( (low+high)>>1 );
       
   329         
       
   330         const TInt compare( aProcessId.iUid - iProcessOriginMap[mid].iProcessId.iUid );
       
   331         if( compare == 0 )
       
   332             {
       
   333             return mid;
       
   334             }
       
   335         else if( compare > 0 )
       
   336             {
       
   337             low = mid + 1;
       
   338             }
       
   339         else
       
   340             {
       
   341             high = mid;
   329             }
   342             }
   330         }
   343         }
   331 
   344 
   332     return KErrNotFound;
   345     return KErrNotFound;
   333     }
   346     }
   417     ptr.Num( aOrigin );
   430     ptr.Num( aOrigin );
   418     iWriteStream.WriteL( ptr );
   431     iWriteStream.WriteL( ptr );
   419     iWriteStream.WriteL( KLineFeed );
   432     iWriteStream.WriteL( KLineFeed );
   420     }
   433     }
   421 
   434 
       
   435 TInt CProcessOriginMapper::Compare(const TProcessOriginPair& aFirst, const TProcessOriginPair& aSecond)
       
   436     {
       
   437     return aFirst.iProcessId.iUid - aSecond.iProcessId.iUid;
       
   438     }
       
   439