realtimenetprots/sipfw/ProfileAgent/Server/Src/SipProfileServerCore.cpp
branchRCL_3
changeset 49 0a1ad22c7bdc
parent 46 346e49b9ce14
child 56 2c7192069824
equal deleted inserted replaced
46:346e49b9ce14 49:0a1ad22c7bdc
   512                     }
   512                     }
   513                 if(!waitForDeregistration)
   513                 if(!waitForDeregistration)
   514                     {
   514                     {
   515                     ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState);
   515                     ConfirmSystemstateMonitor(CSipSystemStateMonitor::ESystemState);
   516                     }
   516                     }
   517                 } //end if Offline         
   517                 } //end if Offline
       
   518             
       
   519             //If the System receives Online event
       
   520             if(aValue == CSipSystemStateMonitor::ESystemOnline)
       
   521                 {                
       
   522                 for (TInt i = 0; i < iProfileCache.Count(); i++)
       
   523                     {
       
   524                     CSIPProfileCacheItem* item = iProfileCache[i];
       
   525                     item->OfflineInitiated(EFalse);                    
       
   526                     CSIPConcreteProfile::TStatus status;
       
   527                     iPluginDirector->State(status, item->UsedProfile());
       
   528                     if (item->IsReferred() && status == CSIPConcreteProfile::EUnregistered)
       
   529                         {
       
   530                         TRAPD(err, item->StartRegisterL(*iWaitForIAP, *iRegInProg, ETrue));
       
   531                         if (err != KErrNone)
       
   532                             {
       
   533                             HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err);
       
   534                             }
       
   535                         }
       
   536                     }
       
   537                 } //end if Online           
   518 	    } //end if SystemState    
   538 	    } //end if SystemState    
   519 	else if(aVariable == CSipSystemStateMonitor::ERfsState)
   539 	else if(aVariable == CSipSystemStateMonitor::ERfsState)
   520 	    {
   540 	    {
   521 	    if(aValue == CSipSystemStateMonitor::ERfsStarted)
   541 	    if(aValue == CSipSystemStateMonitor::ERfsStarted)
   522 	        {
   542 	        {
  1551     {
  1571     {
  1552     TInt index = iObservers.Find(&aObserver);
  1572     TInt index = iObservers.Find(&aObserver);
  1553     if (index != KErrNotFound)
  1573     if (index != KErrNotFound)
  1554         {
  1574         {
  1555         iObservers.Remove(index);
  1575         iObservers.Remove(index);
       
  1576         iObservers.Compress();
  1556         }
  1577         }
  1557 
  1578 
  1558     for (TInt i = 0; i < iProfileCache.Count(); i ++)
  1579     for (TInt i = 0; i < iProfileCache.Count(); i ++)
  1559         {
  1580         {
  1560         CSIPProfileCacheItem* item = iProfileCache[i];
  1581         CSIPProfileCacheItem* item = iProfileCache[i];
  1758 			}
  1779 			}
  1759 		else
  1780 		else
  1760 			{
  1781 			{
  1761 			// Backup ends. Do not read profiles, as they are already in cache.
  1782 			// Backup ends. Do not read profiles, as they are already in cache.
  1762 			iProfileStorage = CSIPProfileStorage::NewL(iFs);
  1783 			iProfileStorage = CSIPProfileStorage::NewL(iFs);
       
  1784 			iProfileStorage->GetProfileStorageIndexObject()->SetProfileServerCoreObject(this);
  1763 			}
  1785 			}
  1764 		PROFILE_DEBUG1("ProfileServerCore::ReserveStorageL, storage reserved")
  1786 		PROFILE_DEBUG1("ProfileServerCore::ReserveStorageL, storage reserved")
  1765 		}
  1787 		}
  1766     }
  1788     }
  1767 
  1789 
  1931 	{
  1953 	{
  1932     TInt index = ProfileCached(aProfileId);
  1954     TInt index = ProfileCached(aProfileId);
  1933     if (index >= 0)
  1955     if (index >= 0)
  1934     	{
  1956     	{
  1935     	iProfileCache.Remove(index);
  1957     	iProfileCache.Remove(index);
       
  1958     	iProfileCache.Compress();
  1936     	}
  1959     	}
  1937 	}
  1960 	}
  1938 
  1961 
  1939 // -----------------------------------------------------------------------------
  1962 // -----------------------------------------------------------------------------
  1940 // CSIPProfileServerCore::RemoveUnusedMigrationControllers
  1963 // CSIPProfileServerCore::RemoveUnusedMigrationControllers
  1947 		if (!iMigrationControllers[i]->IsUsed() &&
  1970 		if (!iMigrationControllers[i]->IsUsed() &&
  1948 			iMigrationControllers[i]->SnapId() != aSnapId)
  1971 			iMigrationControllers[i]->SnapId() != aSnapId)
  1949 			{
  1972 			{
  1950 			CSipAlrMigrationController* unused = iMigrationControllers[i];
  1973 			CSipAlrMigrationController* unused = iMigrationControllers[i];
  1951 			iMigrationControllers.Remove(i);
  1974 			iMigrationControllers.Remove(i);
       
  1975 			iMigrationControllers.Compress();
  1952 			delete unused;
  1976 			delete unused;
       
  1977 			unused = NULL;
  1953 			}
  1978 			}
  1954 		}
  1979 		}
  1955 	}
  1980 	}
  1956 
  1981 
  1957 // -----------------------------------------------------------------------------
  1982 // -----------------------------------------------------------------------------
  2197             {            
  2222             {            
  2198             CSIPProfileCacheItem* item = self->iProfileCache[i];
  2223             CSIPProfileCacheItem* item = self->iProfileCache[i];
  2199             CSIPConcreteProfile::TStatus status;
  2224             CSIPConcreteProfile::TStatus status;
  2200             self->iPluginDirector->State( status, self->iProfileCache[i]->UsedProfile() );
  2225             self->iPluginDirector->State( status, self->iProfileCache[i]->UsedProfile() );
  2201             item->OfflineInitiated(EFalse);
  2226             item->OfflineInitiated(EFalse);
  2202             if (item->IsReferred() && (status == CSIPConcreteProfile::EUnregistered) ) 
  2227             if (item->IsReferred() && (!self->iApnManager->IsIapGPRSL(item->Profile().IapId())) 
       
  2228                     && status == CSIPConcreteProfile::EUnregistered) 
  2203                 {                
  2229                 {                
  2204                 TRAPD(err, item->StartRegisterL(*(self->iWaitForIAP), *(self->iRegInProg), ETrue));
  2230                 TRAPD(err, item->StartRegisterL(*(self->iWaitForIAP), *(self->iRegInProg), ETrue));
  2205                 if (err != KErrNone)
  2231                 if (err != KErrNone)
  2206                     {
  2232                     {
  2207                     self->HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err);
  2233                     self->HandleAsyncError(*item,CSIPConcreteProfile::ERegistrationInProgress,err);