realtimenetprots/sipfw/ProfileAgent/Server/Src/sipalrmigrationcontroller.cpp
branchRCL_3
changeset 41 f54bfd820e04
parent 12 c2e8c8b73582
child 43 b5e99d8877c7
equal deleted inserted replaced
40:654ed625511d 41:f54bfd820e04
    28 // -----------------------------------------------------------------------------
    28 // -----------------------------------------------------------------------------
    29 // CSipAlrMigrationController::NewLC
    29 // CSipAlrMigrationController::NewLC
    30 // -----------------------------------------------------------------------------
    30 // -----------------------------------------------------------------------------
    31 //
    31 //
    32 CSipAlrMigrationController*
    32 CSipAlrMigrationController*
    33 CSipAlrMigrationController::NewLC(CSipAlrMonitor& aAlrMonitor, TUint32 aSnapId)
    33 CSipAlrMigrationController::NewLC(CSipAlrMonitor& aAlrMonitor, TSipSNAPConfigurationData aSnapData)
    34 	{
    34 	{
    35 	CSipAlrMigrationController* self =
    35 	CSipAlrMigrationController* self =
    36 		new (ELeave) CSipAlrMigrationController(aAlrMonitor, aSnapId);
    36 		new (ELeave) CSipAlrMigrationController(aAlrMonitor, aSnapData);
    37     CleanupStack::PushL(self);
    37     CleanupStack::PushL(self);
    38     return self;
    38     return self;
    39 	}
    39 	}
    40 
    40 
    41 // -----------------------------------------------------------------------------
    41 // -----------------------------------------------------------------------------
    42 // CSipAlrMigrationController::CSipAlrMigrationController
    42 // CSipAlrMigrationController::CSipAlrMigrationController
    43 // -----------------------------------------------------------------------------
    43 // -----------------------------------------------------------------------------
    44 //
    44 //
    45 CSipAlrMigrationController::CSipAlrMigrationController(
    45 CSipAlrMigrationController::CSipAlrMigrationController(
    46 	CSipAlrMonitor& aAlrMonitor,
    46 	CSipAlrMonitor& aAlrMonitor,
    47 	TUint32 aSnapId) :
    47 	TSipSNAPConfigurationData aSnapData) :
    48 	iAlrMonitor(aAlrMonitor),
    48 	iAlrMonitor(aAlrMonitor),
    49     iSnapId(aSnapId)
    49 	iSnapData(aSnapData)
    50 #ifdef CPPUNIT_TEST
    50 #ifdef CPPUNIT_TEST
    51     // Set the array granularity to 1, so it allocates memory in each append
    51     // Set the array granularity to 1, so it allocates memory in each append
    52     , iObservers(1)
    52     , iObservers(1)
    53 #endif
    53 #endif
    54 	{
    54 	{
   123 // CSipAlrMigrationController::SnapId
   123 // CSipAlrMigrationController::SnapId
   124 // -----------------------------------------------------------------------------
   124 // -----------------------------------------------------------------------------
   125 //
   125 //
   126 TUint32 CSipAlrMigrationController::SnapId() const
   126 TUint32 CSipAlrMigrationController::SnapId() const
   127 	{
   127 	{
   128 	return iSnapId;
   128 	return iSnapData.iSnapId;
   129 	}
   129 	}
       
   130 
       
   131 TUint32 CSipAlrMigrationController::BearerId() const
       
   132     {
       
   133     return iSnapData.iBearerId;
       
   134     }
   130 
   135 
   131 // -----------------------------------------------------------------------------
   136 // -----------------------------------------------------------------------------
   132 // CSipAlrMigrationController::IsUsed
   137 // CSipAlrMigrationController::IsUsed
   133 // -----------------------------------------------------------------------------
   138 // -----------------------------------------------------------------------------
   134 //
   139 //
   146 TUint32
   151 TUint32
   147 CSipAlrMigrationController::AttachProfileL(MSipAlrMigrationObserver& aObserver)
   152 CSipAlrMigrationController::AttachProfileL(MSipAlrMigrationObserver& aObserver)
   148     {
   153     {
   149 	TSipAlrMigrationObserverInfo observerInfo(aObserver);
   154 	TSipAlrMigrationObserverInfo observerInfo(aObserver);
   150 	iObservers.AppendL(observerInfo);
   155 	iObservers.AppendL(observerInfo);
   151 
   156     
   152     const TInt KFirstObserverExists = 1;
   157     const TInt KFirstObserverExists = 1;
   153     if (iObservers.Count() == KFirstObserverExists)
   158     if (iObservers.Count() == KFirstObserverExists)
   154     	{
   159     	{
   155     	PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL snapId", iSnapId)
   160         PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL snapId", SnapId())
   156     	iAlrMonitor.MonitorSnapL(iSnapId, *this);
   161         PROFILE_DEBUG3("CSipAlrMigrCtrl::AttachProfileL BearerFiltered.. ", BearerId())
       
   162         iAlrMonitor.MonitorSnapL(iSnapData, *this);
   157     	return KNoIap;
   163     	return KNoIap;
   158     	}
   164     	}
   159 
   165 
   160     return iAllowedIapId;
   166     return iAllowedIapId;
   161     }
   167     }
   249 			PROFILE_DEBUG3("CSipAlrMigrCtrl::SetMigrPermission, allow=",
   255 			PROFILE_DEBUG3("CSipAlrMigrCtrl::SetMigrPermission, allow=",
   250 						   !iMigrationDisallowed)
   256 						   !iMigrationDisallowed)
   251 			TInt err(KErrNone);
   257 			TInt err(KErrNone);
   252 			if (iMigrationDisallowed)
   258 			if (iMigrationDisallowed)
   253 				{
   259 				{
   254 				err = iAlrMonitor.DisallowMigration(iSnapId);
   260 			    err = iAlrMonitor.DisallowMigration(iSnapData);
   255 				}
   261 				}
   256 			else
   262 			else
   257 				{
   263 				{
   258 				err = iAlrMonitor.AllowMigration(iSnapId);
   264 			    err = iAlrMonitor.AllowMigration(iSnapData);
   259 				}
   265 				}
   260 			if (err != KErrNone)
   266 			if (err != KErrNone)
   261 				{
   267 				{
   262 	        	for (TInt i = 0; i < iObservers.Count(); ++i)
   268 	        	for (TInt i = 0; i < iObservers.Count(); ++i)
   263 					{
   269 					{
   272 // CSipAlrMigrationController::RefreshIapAvailabilityL
   278 // CSipAlrMigrationController::RefreshIapAvailabilityL
   273 // -----------------------------------------------------------------------------
   279 // -----------------------------------------------------------------------------
   274 //
   280 //
   275 void CSipAlrMigrationController::RefreshIapAvailabilityL(TUint32 aSnapId)
   281 void CSipAlrMigrationController::RefreshIapAvailabilityL(TUint32 aSnapId)
   276 	{
   282 	{
   277 	if (!iRefreshIssued && aSnapId == iSnapId)
   283 	if (!iRefreshIssued && aSnapId == SnapId())
   278 		{
   284 		{
   279 		iAlrMonitor.RefreshIapAvailabilityL(aSnapId);
   285 	    
       
   286 		iAlrMonitor.RefreshIapAvailabilityL(iSnapData);
   280 		iRefreshIssued = ETrue;
   287 		iRefreshIssued = ETrue;
   281 		}
   288 		}
   282 	}
   289 	}
   283 
   290 
   284 // -----------------------------------------------------------------------------
   291 // -----------------------------------------------------------------------------
   291 	TBool aIapWorks)
   298 	TBool aIapWorks)
   292 	{
   299 	{
   293 	PROFILE_DEBUG4("CSipAlrMigrCtrl::SetIapAcceptance, iap,works=",
   300 	PROFILE_DEBUG4("CSipAlrMigrCtrl::SetIapAcceptance, iap,works=",
   294 				   iAllowedIapId,
   301 				   iAllowedIapId,
   295 				   aIapWorks)
   302 				   aIapWorks)
   296 
   303     
   297 	TInt index = FindIndex(aObserver);
   304 	TInt index = FindIndex(aObserver);
   298 	if (index != KErrNotFound && iObservers[index].iIsWaitingForAcceptance)
   305 	if (index != KErrNotFound && iObservers[index].iIsWaitingForAcceptance)
   299 		{
   306 		{
   300 		iObservers[index].iIsWaitingForAcceptance = EFalse;
   307 		iObservers[index].iIsWaitingForAcceptance = EFalse;
   301 		if (aIapWorks)
   308 		if (aIapWorks)
   304 			for (TInt i = 0; i < iObservers.Count(); ++i)
   311 			for (TInt i = 0; i < iObservers.Count(); ++i)
   305 				{
   312 				{
   306 				iObservers[i].iIsWaitingForAcceptance = EFalse;
   313 				iObservers[i].iIsWaitingForAcceptance = EFalse;
   307 				}
   314 				}
   308 			PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance accepted")
   315 			PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance accepted")
   309 			return iAlrMonitor.NewIapAccepted(iSnapId);
   316 			return iAlrMonitor.NewIapAccepted(iSnapData);
   310 			}
   317 			}
   311 
   318 
   312 		if (!ObserversWaitingAcceptance())
   319 		if (!ObserversWaitingAcceptance())
   313 			{
   320 			{
   314 			// Nobody got IAP to work
   321 			// Nobody got IAP to work
   315 			PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance rejected")
   322 			PROFILE_DEBUG1("CSipAlrMigrCtrl::SetIapAcceptance rejected")
   316 			return iAlrMonitor.NewIapRejected(iSnapId);
   323 			return iAlrMonitor.NewIapRejected(iSnapData);
   317 			}
   324 			}
   318 		}
   325 		}
   319 	return KErrNone;
   326 	return KErrNone;
   320 	}
   327 	}
   321 
   328