diff -r 50de4d668bb6 -r 82c0024438c8 harvester/monitorplugins/fileplugin/src/processoriginmapper.cpp --- 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(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; + } +