browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp
changeset 10 a359256acfc6
parent 5 10e98eab6f85
child 25 0ed94ceaa377
equal deleted inserted replaced
5:10e98eab6f85 10:a359256acfc6
   414 void CFeedsServerSession::DispatchMessageL(const RMessage2 &aMessage)
   414 void CFeedsServerSession::DispatchMessageL(const RMessage2 &aMessage)
   415     {
   415     {
   416     // Ensure the server is ready.
   416     // Ensure the server is ready.
   417     iFeedsServer.WakeupServerL();
   417     iFeedsServer.WakeupServerL();
   418     iCurrOp = aMessage.Function();
   418     iCurrOp = aMessage.Function();
   419     
   419 
       
   420     if ( (!IsSpaceAvailableL()) && ((iCurrOp != EFeedsServerGetRootFolder) ||
       
   421                                 (iCurrOp != EFeedsServerWatchFolderList) || (iCurrOp != EFeedsServerGetSettings) ||
       
   422                                 (iCurrOp != EFeedsServerWatchSettings) || (iCurrOp != EFeedsServerSetConnection) ||
       
   423                                 (iCurrOp != EFeedsServerDisconnectManualUpdateConnection) ||
       
   424                                 (iCurrOp != EFeedsServerCancelAll) || (iCurrOp != EFeedsServerGetFeed) ||
       
   425                                 (iCurrOp != EFeedsServerPrintDBTables)))
       
   426         {
       
   427         User::Leave(KErrNoMemory);
       
   428         }
       
   429 
   420     switch (iCurrOp)
   430     switch (iCurrOp)
   421         {
   431         {
   422 	    case EFeedsServerGetRootFolder:
   432 	    case EFeedsServerGetRootFolder:
   423 	        GetRootFolderL(aMessage);
   433 	        GetRootFolderL(aMessage);
   424             break;
   434             break;
   679             // Get the corresponding feed id. If it isn't found then force
   689             // Get the corresponding feed id. If it isn't found then force
   680             // an update.
   690             // an update.
   681             //Gyanendra TODO // should create entry into database
   691             //Gyanendra TODO // should create entry into database
   682             if (!iFeedsServer.iFeedsDatabase->FeedIdFromUrlL(feedUrl, folderListId, feedId))
   692             if (!iFeedsServer.iFeedsDatabase->FeedIdFromUrlL(feedUrl, folderListId, feedId))
   683                 {
   693                 {
       
   694 
       
   695                 if (!IsSpaceAvailableL())
       
   696                     {
       
   697                     aMessage.Complete(KErrNoMemory);
       
   698                     }
       
   699 
   684                 //Find feed id from folder id
   700                 //Find feed id from folder id
   685                 iFeedsServer.iFeedsDatabase->SetIsFolderTableUpdateNeeded(ETrue);
   701                 iFeedsServer.iFeedsDatabase->SetIsFolderTableUpdateNeeded(ETrue);
   686                 TInt entryId = iFeedsServer.iFeedsDatabase->FolderItemAddL(folderListId, feedUrl, feedUrl, EFalse, KRootFolderId, KAutoUpdatingOff);
   702                 TInt entryId = iFeedsServer.iFeedsDatabase->FolderItemAddL(folderListId, feedUrl, feedUrl, EFalse, KRootFolderId, KAutoUpdatingOff);
   687                 iFeedsServer.iFeedsDatabase->FeedIdFromEntryId(entryId, folderListId, feedId);
   703                 iFeedsServer.iFeedsDatabase->FeedIdFromEntryIdL(entryId, folderListId, feedId);
   688                 updateNeeded = ETrue;
   704                 updateNeeded = ETrue;
   689                 }
   705                 }
   690             }
   706             }
   691         else
   707         else
   692             {
   708             {
   726             }
   742             }
   727 
   743 
   728         // Otherwise create a task to update the feed.
   744         // Otherwise create a task to update the feed.
   729         else
   745         else
   730             {
   746             {
   731 
       
   732             TInt drive( EDriveC );
       
   733             TBool isSpace( EFalse );
       
   734             RFs                 rfs;
       
   735 
       
   736             User::LeaveIfError(rfs.Connect());
       
   737             CleanupClosePushL(rfs);
       
   738 
       
   739             TRAP_IGNORE( isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL(
       
   740                                                         &rfs,
       
   741                                                         KMinFreebytes,
       
   742                                                         drive ));
       
   743 
       
   744             CleanupStack::PopAndDestroy();  //rfs
       
   745             
       
   746             // Abort the updation of feeds under low memory.
   747             // Abort the updation of feeds under low memory.
   747             if(isSpace)
   748             if ( IsSpaceAvailableL() )
   748                 {
   749                 {
   749 
   750 
   750                 // If need be clean up the previous task.
   751                 // If need be clean up the previous task.
   751                 delete iUpdateFeedTask;
   752                 delete iUpdateFeedTask;
   752                 iUpdateFeedTask = NULL;
   753                 iUpdateFeedTask = NULL;
  2103 		delete sessionPtr->iPackedFeed;
  2104 		delete sessionPtr->iPackedFeed;
  2104 		sessionPtr->iPackedFeed = NULL;
  2105 		sessionPtr->iPackedFeed = NULL;
  2105 	}
  2106 	}
  2106 	return EFalse;
  2107 	return EFalse;
  2107 }
  2108 }
       
  2109 
       
  2110 // -----------------------------------------------------------------------------
       
  2111 // CFeedsServerSession::IsSpaceAvailableL
       
  2112 //
       
  2113 // This function checks whether disk space has not gone below critical level
       
  2114 // -----------------------------------------------------------------------------
       
  2115 //
       
  2116 TBool CFeedsServerSession::IsSpaceAvailableL()
       
  2117 {
       
  2118     TInt drive( EDriveC );
       
  2119     RFs  rfs;
       
  2120     TBool isSpaceAvailable(EFalse);
       
  2121 
       
  2122     User::LeaveIfError(rfs.Connect());
       
  2123     CleanupClosePushL(rfs);
       
  2124 
       
  2125     TRAP_IGNORE( isSpaceAvailable = !SysUtil::DiskSpaceBelowCriticalLevelL(
       
  2126                                                         &rfs,
       
  2127                                                         KMinFreebytes,
       
  2128                                                         drive ));
       
  2129     CleanupStack::PopAndDestroy();  //rfs
       
  2130 
       
  2131     return isSpaceAvailable;
       
  2132 }