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 |