--- 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;
+ }
+