persistentstorage/centralrepository/cenrepsrv/install.cpp
branchRCL_3
changeset 24 cc28652e0254
parent 23 26645d81f48d
--- a/persistentstorage/centralrepository/cenrepsrv/install.cpp	Tue Aug 31 16:57:14 2010 +0300
+++ b/persistentstorage/centralrepository/cenrepsrv/install.cpp	Wed Sep 01 12:39:58 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -227,116 +227,110 @@
 	// Find added or updated entries
 	ReadInstallDirL(iCurrentInstallDirEntries);
 		
+	TInt newCount=iCurrentInstallDirEntries.Count();
+	TInt currentCount=iInstallEntryArray.Count();
+	TInt i;
+	TInt r;
+	TInt operation;
+
+	// If both counts are 0, we shouldn't have been notified, just return
+	if( (newCount==0) && (currentCount==0))
+		return;
+	
+	if(aStartup)
+		{
+		operation=ESASwisNone;
+		}
+	else
+		{
+		operation=iSWIOperation;
+		}
+
 	// We don't want cache activity during SWI operations
 	TServerResources::iCacheManager->DisableCache();
 
-	TRAPD(err, HandleFileChangesL(aStartup));
+	if( newCount==0)						// currentCount > 0, newCount = 0
+		{									// All installed files have been deleted
+		// Handle deletes of all files
+		for(i=0;i<currentCount;i++)
+			{
+			iInstallEntryArray[i]->HandleFileDeleteL(operation);
+			}
+		// Free memory of elements
+		iInstallEntryArray.ResetAndDestroy();
+		}
+	else 
+		{	
+		if( currentCount==0)				// currentCount = 0, newCount > 0
+			{								// All new files need to be handled
+			for(i=0;i<newCount;i++)
+				{
+				CInstallEntry* newEntry=iCurrentInstallDirEntries[i];
+				newEntry->HandleFileCreateL(operation);
+				}
+			}
+		else								// currentCount > 0, newCount > 0
+			{
+			// Find added and modified entries by going through new entries and
+			// looking for them in current array
+			for(i=0;i<newCount;i++)
+				{
+				CInstallEntry* newEntry=iCurrentInstallDirEntries[i];
+				r=iInstallEntryArray.Find( newEntry, MatchEntries);
+				// If we find new entry in current array, check modification date
+				if(r>=KErrNone)
+					{
+					CInstallEntry* currentEntry=iInstallEntryArray[r];
+					if( newEntry->Modified() > currentEntry->Modified())
+						{												
+						// Deal with newly installed file, note use newEntry
+						// so we use new timestamp
+						newEntry->HandleFileUpdateL(operation);
+						}
+					}
+				else if(r==KErrNotFound)		// File has been added
+					{
+					// Handle add
+					newEntry->HandleFileCreateL(operation);
+					// Don't leave on KErrNotFound
+					r=KErrNone;
+					}
+				User::LeaveIfError(r);
+				}
+	
+			// Find deleted entries by going through current entries and looking for them 
+			// in new array
+			for(i=0;i<currentCount;i++)
+				{
+				CInstallEntry* currentEntry=iInstallEntryArray[i];
+				r=iCurrentInstallDirEntries.Find( currentEntry, MatchEntries);
+				// If we don't find current entry in new array, it's been deleted
+				if(r==KErrNotFound)
+					{
+					// Deal with uninstalls
+					currentEntry->HandleFileDeleteL(operation);
+					// Don't leave on KErrNotFound
+					r=KErrNone;
+					}
+				User::LeaveIfError(r);
+				}
+			}
+
+		// Clear out old list
+		iInstallEntryArray.ResetAndDestroy();
+		
+		// Re-read directory - if any files were corrupt they have been deleted
+		// during the merge, so we need to re-read in case this has occurred
+		ReadInstallDirL(iInstallEntryArray);
+		}
+		
+	SaveInstallDirL();
+	iCurrentInstallDirEntries.ResetAndDestroy();
 	
 	// SWI operations finished, enable cache
-	TServerResources::iCacheManager->EnableCache();
-	User::LeaveIfError(err);
+	TServerResources::iCacheManager->EnableCache();				
 	} 
 
-void CCentRepSWIWatcher::HandleFileChangesL(TBool aStartup)
-    {
-    TInt newCount=iCurrentInstallDirEntries.Count();
-    TInt currentCount=iInstallEntryArray.Count();
-    TInt i;
-    TInt r;
-    TInt operation;
-
-    // If both counts are 0, we shouldn't have been notified, just return
-    if( (newCount==0) && (currentCount==0))
-        return;
-    
-    if(aStartup)
-        {
-        operation=ESASwisNone;
-        }
-    else
-        {
-        operation=iSWIOperation;
-        }
-
-    if( newCount==0)                        // currentCount > 0, newCount = 0
-        {                                   // All installed files have been deleted
-        // Handle deletes of all files
-        for(i=0;i<currentCount;i++)
-            {
-            iInstallEntryArray[i]->HandleFileDeleteL(operation);
-            }
-        // Free memory of elements
-        iInstallEntryArray.ResetAndDestroy();
-        }
-    else 
-        {   
-        if( currentCount==0)                // currentCount = 0, newCount > 0
-            {                               // All new files need to be handled
-            for(i=0;i<newCount;i++)
-                {
-                CInstallEntry* newEntry=iCurrentInstallDirEntries[i];
-                newEntry->HandleFileCreateL(operation);
-                }
-            }
-        else                                // currentCount > 0, newCount > 0
-            {
-            // Find added and modified entries by going through new entries and
-            // looking for them in current array
-            for(i=0;i<newCount;i++)
-                {
-                CInstallEntry* newEntry=iCurrentInstallDirEntries[i];
-                r=iInstallEntryArray.Find( newEntry, MatchEntries);
-                // If we find new entry in current array, check modification date
-                if(r>=KErrNone)
-                    {
-                    CInstallEntry* currentEntry=iInstallEntryArray[r];
-                    if( newEntry->Modified() > currentEntry->Modified())
-                        {                                               
-                        // Deal with newly installed file, note use newEntry
-                        // so we use new timestamp
-                        newEntry->HandleFileUpdateL(operation);
-                        }
-                    }
-                else if(r==KErrNotFound)        // File has been added
-                    {
-                    // Handle add
-                    newEntry->HandleFileCreateL(operation);
-                    // Don't leave on KErrNotFound
-                    r=KErrNone;
-                    }
-                User::LeaveIfError(r);
-                }
-    
-            // Find deleted entries by going through current entries and looking for them 
-            // in new array
-            for(i=0;i<currentCount;i++)
-                {
-                CInstallEntry* currentEntry=iInstallEntryArray[i];
-                r=iCurrentInstallDirEntries.Find( currentEntry, MatchEntries);
-                // If we don't find current entry in new array, it's been deleted
-                if(r==KErrNotFound)
-                    {
-                    // Deal with uninstalls
-                    currentEntry->HandleFileDeleteL(operation);
-                    // Don't leave on KErrNotFound
-                    r=KErrNone;
-                    }
-                User::LeaveIfError(r);
-                }
-            }
-
-        // Clear out old list
-        iInstallEntryArray.ResetAndDestroy();
-        
-        // Re-read directory - if any files were corrupt they have been deleted
-        // during the merge, so we need to re-read in case this has occurred
-        ReadInstallDirL(iInstallEntryArray);
-        }
-        
-    SaveInstallDirL();
-    iCurrentInstallDirEntries.ResetAndDestroy();
-    }
-
 CInstallEntry::CInstallEntry() :
 	iUid(KNullUid),
 	iModified(0),