1 /* |
|
2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * Implementation of plugin base class |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 #include <datamobilitycommsdattypes.h> |
|
21 #include <cmpluginbaseeng.h> |
|
22 #include <cmpsettingsconsts.h> |
|
23 #include <featmgr.h> |
|
24 #include <cmpluginembdestinationdef.h> |
|
25 |
|
26 #include "cmmserverdefs.h" |
|
27 #include "ccmpluginbaseengtextresolver.h" |
|
28 |
|
29 #include "OstTraceDefinitions.h" |
|
30 #ifdef OST_TRACE_COMPILER_IN_USE |
|
31 #include "ccmpluginbaseengTraces.h" |
|
32 #endif |
|
33 |
|
34 |
|
35 using namespace CMManager; |
|
36 using namespace CommsDat; |
|
37 |
|
38 const TInt KApMaxConnNameLength = 50; |
|
39 _LIT( KFormatPostfix, "%02d" ); |
|
40 _LIT( KFormatLargePostfix, "%d" ); |
|
41 _LIT( KFormatNameWithPostfix, "%S(%S)" ); |
|
42 _LIT( KFormatNoPostfix, "%S" ); |
|
43 const TInt KMaxPostfixLength = 5; |
|
44 |
|
45 _LIT( KDefWapGatewayIpAddress, "0.0.0.0" ); |
|
46 |
|
47 _LIT( KLocationName, "Mobile" ); |
|
48 |
|
49 _LIT( KDefaultIapName, "Connection Method" ); |
|
50 |
|
51 |
|
52 EXPORT_C CCmClientPluginInstance* CCmClientPluginInstance::NewLC() |
|
53 { |
|
54 OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_NEWLC_ENTRY ); |
|
55 |
|
56 CCmClientPluginInstance* self = new( ELeave ) CCmClientPluginInstance(); |
|
57 CleanupStack::PushL( self ); |
|
58 self->ConstructL(); |
|
59 |
|
60 OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_NEWLC_EXIT ); |
|
61 return self; |
|
62 } |
|
63 |
|
64 EXPORT_C CCmClientPluginInstance* CCmClientPluginInstance::NewL() |
|
65 { |
|
66 OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_NEWL_ENTRY ); |
|
67 |
|
68 CCmClientPluginInstance* self = CCmClientPluginInstance::NewLC(); |
|
69 CleanupStack::Pop( self ); |
|
70 |
|
71 OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_NEWL_EXIT ); |
|
72 return self; |
|
73 } |
|
74 |
|
75 CCmClientPluginInstance::CCmClientPluginInstance() |
|
76 : |
|
77 iNamingMethod( ENamingUnique ), |
|
78 iLocationEnabled( EFalse ), |
|
79 iIapId( 0 ) |
|
80 { |
|
81 } |
|
82 |
|
83 EXPORT_C CCmClientPluginInstance::~CCmClientPluginInstance() |
|
84 { |
|
85 OstTraceFunctionEntry0( CCMCLIENTPLUGININSTANCE_CCMCLIENTPLUGININSTANCE_ENTRY ); |
|
86 |
|
87 iGenRecordArray.ResetAndDestroy(); |
|
88 iBearerSpecRecordArray.ResetAndDestroy(); |
|
89 |
|
90 OstTraceFunctionExit0( CCMCLIENTPLUGININSTANCE_CCMCLIENTPLUGININSTANCE_EXIT ); |
|
91 } |
|
92 |
|
93 // --------------------------------------------------------------------------- |
|
94 // Second phase constructor. |
|
95 // --------------------------------------------------------------------------- |
|
96 // |
|
97 void CCmClientPluginInstance::ConstructL() |
|
98 { |
|
99 } |
|
100 |
|
101 |
|
102 // --------------------------------------------------------------------------- |
|
103 // TCmPluginInitParam::TCmPluginInitParam |
|
104 // --------------------------------------------------------------------------- |
|
105 // |
|
106 EXPORT_C TCmPluginInitParam::TCmPluginInitParam( CommsDat::CMDBSession& aSession ) |
|
107 : |
|
108 iSessionRef( aSession ) |
|
109 { |
|
110 OstTraceFunctionEntry0( TCMPLUGININITPARAM_TCMPLUGININITPARAM_ENTRY ); |
|
111 |
|
112 iNotused1 = NULL; |
|
113 iNotused2 = NULL; |
|
114 |
|
115 OstTraceFunctionExit0( TCMPLUGININITPARAM_TCMPLUGININITPARAM_EXIT ); |
|
116 } |
|
117 |
|
118 // --------------------------------------------------------------------------- |
|
119 // CCmPluginBaseEng::CCmPluginBaseEng |
|
120 // --------------------------------------------------------------------------- |
|
121 // |
|
122 EXPORT_C CCmPluginBaseEng::CCmPluginBaseEng( TCmPluginInitParam *aInitParam ) |
|
123 : |
|
124 iSession( aInitParam->iSessionRef ), |
|
125 iNamingMethod( ENamingUnique ) |
|
126 { |
|
127 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY ); |
|
128 |
|
129 iDtor_ID_Key.iUid = 0; |
|
130 iBearerType = 0; |
|
131 |
|
132 iIapRecord = NULL; |
|
133 iProxyRecord = NULL; |
|
134 iServiceRecord = NULL; |
|
135 iNetworkRecord = NULL; |
|
136 iLocationRecord = NULL; |
|
137 iWapAPRecord = NULL; |
|
138 iWapIPBearerRecord = NULL; |
|
139 iMetaDataRecord = NULL; |
|
140 |
|
141 iCmId = 0; |
|
142 iMetadataTableId = 0; |
|
143 iLocationEnabled = EFalse; |
|
144 |
|
145 OstTraceFunctionExit0( CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT ); |
|
146 } |
|
147 |
|
148 // --------------------------------------------------------------------------- |
|
149 // CCmPluginBaseEng::~CCmPluginBaseEng |
|
150 // --------------------------------------------------------------------------- |
|
151 // |
|
152 EXPORT_C CCmPluginBaseEng::~CCmPluginBaseEng() |
|
153 { |
|
154 OstTraceFunctionEntry0( DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY ); |
|
155 |
|
156 iCmId = 0; |
|
157 delete iIapRecord; iIapRecord = NULL; |
|
158 delete iProxyRecord; iProxyRecord = NULL; |
|
159 delete iServiceRecord; iServiceRecord = NULL; |
|
160 delete iNetworkRecord; iNetworkRecord = NULL; |
|
161 delete iLocationRecord; iLocationRecord = NULL; |
|
162 delete iWapAPRecord; iWapAPRecord = NULL; |
|
163 delete iWapIPBearerRecord; iWapIPBearerRecord = NULL; |
|
164 delete iMetaDataRecord; iMetaDataRecord = NULL; |
|
165 |
|
166 iLocationEnabled = EFalse; |
|
167 |
|
168 REComSession::DestroyedImplementation( iDtor_ID_Key ); |
|
169 |
|
170 OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_EXIT ); |
|
171 } |
|
172 |
|
173 // --------------------------------------------------------------------------- |
|
174 // CCmPluginBaseEng::ConstructL |
|
175 // --------------------------------------------------------------------------- |
|
176 // |
|
177 EXPORT_C void CCmPluginBaseEng::ConstructL() |
|
178 { |
|
179 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CONSTRUCTL_ENTRY ); |
|
180 |
|
181 TRAPD( err, iMetadataTableId = CCDIAPMetadataRecord::TableIdL( iSession ) ); |
|
182 if ( err ) |
|
183 { |
|
184 if ( err == KErrNotFound ) |
|
185 { |
|
186 iMetadataTableId = CCDIAPMetadataRecord::CreateTableL( iSession ); |
|
187 } |
|
188 else |
|
189 { |
|
190 User::LeaveIfError( err ); |
|
191 } |
|
192 } |
|
193 |
|
194 OstTraceFunctionExit0( CCMPLUGINBASEENG_CONSTRUCTL_EXIT ); |
|
195 } |
|
196 |
|
197 // --------------------------------------------------------------------------- |
|
198 // CCmPluginBaseEng::UpdateL |
|
199 // --------------------------------------------------------------------------- |
|
200 // |
|
201 EXPORT_C void CCmPluginBaseEng::UpdateL( |
|
202 CCmClientPluginInstance* aClientPluginInstance ) |
|
203 { |
|
204 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEL_ENTRY ); |
|
205 |
|
206 PrepareToUpdateRecordsL( aClientPluginInstance ); |
|
207 |
|
208 UpdateServiceRecordL( aClientPluginInstance ); |
|
209 UpdateLocationRecordL( aClientPluginInstance ); |
|
210 UpdateNetworkRecordL( aClientPluginInstance ); |
|
211 UpdateIAPRecordL( aClientPluginInstance ); |
|
212 UpdateWapRecordL( aClientPluginInstance ); |
|
213 UpdateProxyRecordL( aClientPluginInstance ); |
|
214 UpdateMetadataRecordL( aClientPluginInstance ); |
|
215 UpdateConnPrefSettingL(); |
|
216 |
|
217 UpdateBearerRecordsL( |
|
218 aClientPluginInstance->iGenRecordArray, |
|
219 aClientPluginInstance->iBearerSpecRecordArray ); |
|
220 |
|
221 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEL_EXIT ); |
|
222 } |
|
223 |
|
224 // --------------------------------------------------------------------------- |
|
225 // Delete this connection methond. |
|
226 // Record ids are checked to be sure that we delete only records |
|
227 // that were loaded before. |
|
228 // --------------------------------------------------------------------------- |
|
229 // |
|
230 EXPORT_C void CCmPluginBaseEng::DeleteL() |
|
231 { |
|
232 OstTraceFunctionEntry0( CCMPLUGINBASEENG_DELETEL_ENTRY ); |
|
233 |
|
234 PrepareToDeleteRecordsL(); |
|
235 |
|
236 if ( iIapRecord && iIapRecord->RecordId() ) |
|
237 { |
|
238 iIapRecord->DeleteL( iSession ); |
|
239 } |
|
240 |
|
241 if ( iProxyRecord && iProxyRecord->RecordId() ) |
|
242 { |
|
243 iProxyRecord->DeleteL( iSession ); |
|
244 } |
|
245 |
|
246 if ( iServiceRecord && iServiceRecord->RecordId() ) |
|
247 { |
|
248 iServiceRecord->DeleteL( iSession ); |
|
249 } |
|
250 |
|
251 if ( iNetworkRecord && iNetworkRecord->RecordId() ) |
|
252 { |
|
253 iNetworkRecord->DeleteL( iSession ); |
|
254 } |
|
255 |
|
256 if ( iLocationRecord && iLocationRecord->RecordId() ) |
|
257 { |
|
258 iLocationRecord->DeleteL( iSession ); |
|
259 } |
|
260 |
|
261 if ( iWapAPRecord && iWapAPRecord->RecordId() ) |
|
262 { |
|
263 iWapAPRecord->DeleteL( iSession ); |
|
264 } |
|
265 |
|
266 if ( iWapIPBearerRecord && iWapIPBearerRecord->RecordId() ) |
|
267 { |
|
268 iWapIPBearerRecord->DeleteL( iSession ); |
|
269 } |
|
270 |
|
271 if ( iMetaDataRecord && iMetaDataRecord->RecordId() ) |
|
272 { |
|
273 iMetaDataRecord->DeleteL( iSession ); |
|
274 } |
|
275 |
|
276 DeleteBearerRecordsL(); |
|
277 |
|
278 OstTraceFunctionExit0( CCMPLUGINBASEENG_DELETEL_EXIT ); |
|
279 } |
|
280 |
|
281 // --------------------------------------------------------------------------- |
|
282 // CCmPluginBaseEng::ReLoad |
|
283 // --------------------------------------------------------------------------- |
|
284 // |
|
285 EXPORT_C void CCmPluginBaseEng::ReLoadL() |
|
286 { |
|
287 OstTraceFunctionEntry0( CCMPLUGINBASEENG_RELOAD_ENTRY ); |
|
288 |
|
289 delete iIapRecord; iIapRecord = NULL; |
|
290 delete iProxyRecord; iProxyRecord = NULL; |
|
291 delete iServiceRecord; iServiceRecord = NULL; |
|
292 delete iNetworkRecord; iNetworkRecord = NULL; |
|
293 delete iLocationRecord; iLocationRecord = NULL; |
|
294 delete iWapAPRecord; iWapAPRecord = NULL; |
|
295 delete iWapIPBearerRecord; iWapIPBearerRecord = NULL; |
|
296 delete iMetaDataRecord; iMetaDataRecord = NULL; |
|
297 |
|
298 iLocationEnabled = EFalse; |
|
299 |
|
300 ResetBearerRecords(); |
|
301 |
|
302 LoadL( iCmId ); |
|
303 |
|
304 OstTraceFunctionExit0( CCMPLUGINBASEENG_RELOAD_EXIT ); |
|
305 } |
|
306 |
|
307 // --------------------------------------------------------------------------- |
|
308 // CCmPluginBaseEng::LoadL |
|
309 // --------------------------------------------------------------------------- |
|
310 // |
|
311 EXPORT_C void CCmPluginBaseEng::LoadL( TUint32 aIapId ) |
|
312 { |
|
313 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADL_ENTRY ); |
|
314 |
|
315 // Embedded destination must be handled separately first. |
|
316 if ( aIapId > KCmDefaultDestinationAPTagId ) |
|
317 { |
|
318 iCmId = aIapId; |
|
319 return; |
|
320 } |
|
321 |
|
322 DoLoadL( aIapId ); |
|
323 |
|
324 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADL_EXIT ); |
|
325 } |
|
326 |
|
327 // --------------------------------------------------------------------------- |
|
328 // CCmPluginBaseEng::CreateNewL |
|
329 // --------------------------------------------------------------------------- |
|
330 // |
|
331 EXPORT_C void CCmPluginBaseEng::CreateNewL( TUint32 aCmId ) |
|
332 { |
|
333 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATENEWL_ENTRY ); |
|
334 |
|
335 if ( iCmId ) |
|
336 // we already have IAP id -> |
|
337 { |
|
338 User::Leave( KErrAlreadyExists ); |
|
339 } |
|
340 |
|
341 // Optional record, disabled by default. |
|
342 iLocationEnabled = EFalse; |
|
343 |
|
344 // Create mandatory records. |
|
345 iIapRecord = static_cast<CCDIAPRecord*>( |
|
346 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
347 iNetworkRecord = static_cast<CCDNetworkRecord*>( |
|
348 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
349 iProxyRecord = static_cast<CCDProxiesRecord*>( |
|
350 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
351 NewWapRecordL(); |
|
352 iWapIPBearerRecord->iWAPGatewayAddress.SetL( KDefWapGatewayIpAddress ); |
|
353 |
|
354 iMetaDataRecord = NewMetadataRecordL( ETrue ); |
|
355 |
|
356 // Call plugin to create its own records. |
|
357 CreateServiceRecordL(); |
|
358 |
|
359 // Update iaprecord servicetype name. |
|
360 HBufC* servicetypeName( NULL ); |
|
361 ServiceRecordNameLC( servicetypeName ); |
|
362 iIapRecord->iServiceType.SetL( *servicetypeName ); |
|
363 CleanupStack::PopAndDestroy( servicetypeName ); |
|
364 |
|
365 // Update iaprecord bearertype name. |
|
366 HBufC* bearerTypeName( NULL ); |
|
367 BearerRecordNameLC( bearerTypeName ); |
|
368 iIapRecord->iBearerType.SetL( *bearerTypeName ); |
|
369 CleanupStack::PopAndDestroy( bearerTypeName ); |
|
370 |
|
371 CreateBearerRecordsL(); |
|
372 |
|
373 EnableProxyL( EFalse ); |
|
374 |
|
375 _LIT( KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection" ); |
|
376 HBufC* resolvedText( NULL ); |
|
377 resolvedText = CCmPluginBaseEngTextResolver::ResolveTextL( KDefaultConnNameTextId ); |
|
378 if ( resolvedText ) |
|
379 { |
|
380 SetDefaultNameL( *resolvedText ); |
|
381 } |
|
382 else |
|
383 { |
|
384 SetDefaultNameL( KDefaultIapName ); |
|
385 } |
|
386 |
|
387 delete resolvedText; |
|
388 resolvedText = NULL; |
|
389 |
|
390 iIapRecord->iNetworkWeighting = 0; // it's always 0. |
|
391 |
|
392 if ( aCmId != 0 ) |
|
393 { |
|
394 iIapRecord->SetRecordId( aCmId ); |
|
395 iCmId = 0; |
|
396 } |
|
397 else |
|
398 { |
|
399 iIapRecord->SetRecordId( KCDNewRecordRequest ); |
|
400 } |
|
401 |
|
402 OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATENEWL_EXIT ); |
|
403 } |
|
404 |
|
405 // --------------------------------------------------------------------------- |
|
406 // CCmPluginBaseEng::CreateCopyL |
|
407 // --------------------------------------------------------------------------- |
|
408 // |
|
409 EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL( |
|
410 CCmClientPluginInstance* /*aClientPluginInstance*/ ) |
|
411 { |
|
412 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATECOPYL_ENTRY ); |
|
413 |
|
414 TCmPluginInitParam params( iSession ); |
|
415 CCmPluginBaseEng* copyInst = CreateInstanceL( params ); |
|
416 CleanupStack::PushL( copyInst ); |
|
417 |
|
418 PrepareToCopyDataL( copyInst ); |
|
419 CopyDataL( copyInst ); |
|
420 CleanupStack::Pop( copyInst ); |
|
421 |
|
422 OstTraceFunctionExit0( CCMPLUGINBASEENG_CREATECOPYL_EXIT ); |
|
423 return copyInst; |
|
424 } |
|
425 |
|
426 // --------------------------------------------------------------------------- |
|
427 // CCmPluginBaseEng::GetGenericTableIdsToBeObserved |
|
428 // --------------------------------------------------------------------------- |
|
429 // |
|
430 EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObservedL( |
|
431 RArray<TUint32>& aTableIdArray ) const |
|
432 { |
|
433 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_ENTRY ); |
|
434 |
|
435 // Service and bearer records should be added by plugins. |
|
436 aTableIdArray.AppendL( KCDTIdIAPRecord ); |
|
437 aTableIdArray.AppendL( KCDTIdWAPAccessPointRecord ); |
|
438 aTableIdArray.AppendL( KCDTIdWAPIPBearerRecord ); |
|
439 aTableIdArray.AppendL( KCDTIdProxiesRecord ); |
|
440 aTableIdArray.AppendL( iMetadataTableId ); |
|
441 |
|
442 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_EXIT ); |
|
443 } |
|
444 |
|
445 // --------------------------------------------------------------------------- |
|
446 // CCmPluginBaseEng::CopyDataL |
|
447 // --------------------------------------------------------------------------- |
|
448 // |
|
449 void CCmPluginBaseEng::CopyDataL( CCmPluginBaseEng* aCopyInstance ) |
|
450 { |
|
451 OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYDATAL_ENTRY ); |
|
452 |
|
453 aCopyInstance->iLocationEnabled = iLocationEnabled; |
|
454 aCopyInstance->iNamingMethod = iNamingMethod; |
|
455 CopyRecordsL( aCopyInstance ); |
|
456 |
|
457 OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYDATAL_EXIT ); |
|
458 } |
|
459 |
|
460 // --------------------------------------------------------------------------- |
|
461 // CCmPluginBaseEng::CopyRecordsL |
|
462 // --------------------------------------------------------------------------- |
|
463 // |
|
464 void CCmPluginBaseEng::CopyRecordsL( CCmPluginBaseEng* aCopyInstance ) |
|
465 { |
|
466 OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDSL_ENTRY ); |
|
467 |
|
468 CopyRecordDataL( KIapRecordIndex, aCopyInstance ); |
|
469 |
|
470 // Ensure that IAP's name is set by the rules (Naming Method). |
|
471 SetNameL( |
|
472 iIapRecord->iRecordName.GetL(), |
|
473 aCopyInstance->iIapRecord, |
|
474 aCopyInstance->iNamingMethod ); |
|
475 |
|
476 CopyRecordDataL( KServiceRecordIndex, aCopyInstance ); |
|
477 CopyRecordDataL( KNetworkRecordIndex, aCopyInstance ); |
|
478 CopyRecordDataL( KWAPAPRecordIndex, aCopyInstance ); |
|
479 CopyRecordDataL( KWAPBearerRecordIndex, aCopyInstance ); |
|
480 CopyRecordDataL( KMetaDataRecordIndex, aCopyInstance ); |
|
481 CopyRecordDataL( KProxyRecordIndex, aCopyInstance ); |
|
482 |
|
483 CopyBearerRecordsL( aCopyInstance ); |
|
484 |
|
485 OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDSL_EXIT ); |
|
486 } |
|
487 |
|
488 // --------------------------------------------------------------------------- |
|
489 // CCmPluginBaseEng::CopyRecordDataL |
|
490 // --------------------------------------------------------------------------- |
|
491 // |
|
492 void CCmPluginBaseEng::CopyRecordDataL( |
|
493 TUint32 aRecordIdentifier, |
|
494 CCmPluginBaseEng* aCopyInstance ) |
|
495 { |
|
496 OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDDATAL_ENTRY ); |
|
497 |
|
498 switch ( aRecordIdentifier ) |
|
499 { |
|
500 case KIapRecordIndex: |
|
501 { |
|
502 aCopyInstance->iIapRecord = static_cast<CCDIAPRecord*>( |
|
503 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
504 CopyRecordFieldsL( *iIapRecord, *aCopyInstance->iIapRecord ); |
|
505 } |
|
506 break; |
|
507 case KServiceRecordIndex: |
|
508 { |
|
509 aCopyInstance->iServiceRecord = CopyServiceRecordL(); |
|
510 // The name of the service record copy is changed during update |
|
511 // process, in PrepareToUpdateRecordsL()-method. |
|
512 } |
|
513 break; |
|
514 case KNetworkRecordIndex: |
|
515 { |
|
516 aCopyInstance->iNetworkRecord = static_cast<CCDNetworkRecord*>( |
|
517 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
518 CopyRecordFieldsL( *iNetworkRecord, *aCopyInstance->iNetworkRecord ); |
|
519 } |
|
520 break; |
|
521 case KWAPAPRecordIndex: |
|
522 { |
|
523 aCopyInstance->iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
524 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
525 CopyRecordFieldsL( *iWapAPRecord, *aCopyInstance->iWapAPRecord ); |
|
526 } |
|
527 break; |
|
528 case KWAPBearerRecordIndex: |
|
529 { |
|
530 aCopyInstance->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
531 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); |
|
532 CopyRecordFieldsL( *iWapIPBearerRecord, *aCopyInstance->iWapIPBearerRecord ); |
|
533 } |
|
534 break; |
|
535 case KMetaDataRecordIndex: |
|
536 { |
|
537 aCopyInstance->iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( |
|
538 iMetadataTableId ); |
|
539 CopyRecordFieldsL( *iMetaDataRecord, *aCopyInstance->iMetaDataRecord ); |
|
540 } |
|
541 break; |
|
542 case KProxyRecordIndex: |
|
543 { |
|
544 if ( iProxyRecord ) |
|
545 { |
|
546 aCopyInstance->iProxyRecord = static_cast<CCDProxiesRecord*>( |
|
547 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
548 CopyRecordFieldsL( *iProxyRecord, *aCopyInstance->iProxyRecord ); |
|
549 } |
|
550 } |
|
551 break; |
|
552 default: |
|
553 { |
|
554 User::Leave( KErrArgument ); |
|
555 } |
|
556 break; |
|
557 } |
|
558 |
|
559 OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDDATAL_EXIT ); |
|
560 } |
|
561 |
|
562 // --------------------------------------------------------------------------- |
|
563 // Copies the values and attributes of all fields from aSource-record into |
|
564 // aDestination record. Does not copy the record element ID. Also, does not |
|
565 // touch any field in aDestination-record that is NULL in aSource-record. |
|
566 // --------------------------------------------------------------------------- |
|
567 // |
|
568 EXPORT_C void CCmPluginBaseEng::CopyRecordFieldsL( |
|
569 CommsDat::CMDBRecordBase& aSource, |
|
570 CommsDat::CMDBRecordBase& aDestination ) |
|
571 { |
|
572 OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_ENTRY ); |
|
573 |
|
574 const SRecordTypeInfo* recordInfo = aSource.GetRecordInfo(); |
|
575 if ( !recordInfo ) |
|
576 { |
|
577 User::Leave( KErrCorrupt ); |
|
578 } |
|
579 |
|
580 CMDBElement* ptrSource( NULL ); |
|
581 CMDBElement* ptrDest( NULL ); |
|
582 |
|
583 while ( recordInfo && recordInfo->iTypeId != 0 ) |
|
584 { |
|
585 ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId ); |
|
586 ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId ); |
|
587 |
|
588 if ( !( ptrSource->IsNull() ) ) |
|
589 { |
|
590 // Make sure we see only basic type info. Masks out any additional info |
|
591 // on links (CommsDat internal stuff). |
|
592 switch ( recordInfo->iValType & 0x000000ff ) |
|
593 { |
|
594 case CommsDat::EInt: |
|
595 case CommsDat::EBool: |
|
596 { |
|
597 static_cast<CMDBField<TInt>&>( *ptrDest ).SetL( |
|
598 static_cast<CMDBField<TInt>&>( *ptrSource ) ); |
|
599 } |
|
600 break; |
|
601 case CommsDat::EUint32: |
|
602 case CommsDat::ELink: |
|
603 { |
|
604 static_cast<CMDBField<TUint32>&>( *ptrDest ).SetL( |
|
605 static_cast<CMDBField<TUint32>&>( *ptrSource ) ); |
|
606 } |
|
607 break; |
|
608 case CommsDat::EDesC8: |
|
609 { |
|
610 static_cast<CMDBField<TDesC8>&>( *ptrDest ).SetL( |
|
611 static_cast<CMDBField<TDesC8>&>( *ptrSource ) ); |
|
612 } |
|
613 break; |
|
614 case CommsDat::EText: |
|
615 case CommsDat::EMedText: |
|
616 case CommsDat::ELongText: |
|
617 { |
|
618 static_cast<CMDBField<TDesC>&>( *ptrDest ).SetL( |
|
619 static_cast<CMDBField<TDesC>&>( *ptrSource ) ); |
|
620 } |
|
621 break; |
|
622 default: |
|
623 { |
|
624 User::Leave( KErrCorrupt ); |
|
625 } |
|
626 break; |
|
627 } |
|
628 ptrDest->ClearAttributes( ptrDest->Attributes() ); |
|
629 ptrDest->SetAttributes( ptrSource->Attributes() ); |
|
630 } |
|
631 recordInfo++; |
|
632 } |
|
633 |
|
634 OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_EXIT ); |
|
635 } |
|
636 |
|
637 // --------------------------------------------------------------------------- |
|
638 // CCmPluginBaseEng::DoLoadL |
|
639 // --------------------------------------------------------------------------- |
|
640 // |
|
641 void CCmPluginBaseEng::DoLoadL( TUint32 aIapId ) |
|
642 { |
|
643 OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOLOADL_ENTRY ); |
|
644 |
|
645 PrepareToLoadRecordsL(); |
|
646 |
|
647 LoadIAPRecordL( aIapId ); |
|
648 LoadWapRecordL(); |
|
649 LoadMetadataRecordL(); |
|
650 LoadNetworkRecordL(); |
|
651 |
|
652 LoadServiceRecordL(); |
|
653 LoadProxyRecordL(); |
|
654 |
|
655 LoadBearerRecordsL(); |
|
656 |
|
657 OstTraceFunctionExit0( CCMPLUGINBASEENG_DOLOADL_EXIT ); |
|
658 } |
|
659 |
|
660 // --------------------------------------------------------------------------- |
|
661 // CCmPluginBaseEng::PrepareToLoadRecordsL |
|
662 // --------------------------------------------------------------------------- |
|
663 // |
|
664 void CCmPluginBaseEng::PrepareToLoadRecordsL() |
|
665 { |
|
666 OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_ENTRY ); |
|
667 |
|
668 iLocationEnabled = EFalse; |
|
669 PreparePluginToLoadRecordsL(); |
|
670 |
|
671 OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOLOADRECORDSL_EXIT ); |
|
672 } |
|
673 |
|
674 // --------------------------------------------------------------------------- |
|
675 // CCmPluginBaseEng::LoadIAPRecordL |
|
676 // --------------------------------------------------------------------------- |
|
677 // |
|
678 void CCmPluginBaseEng::LoadIAPRecordL( TUint32 aIapId ) |
|
679 { |
|
680 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADIAPRECORDL_ENTRY ); |
|
681 |
|
682 iCmId = aIapId; |
|
683 |
|
684 // Load IAP record. |
|
685 CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord*>( |
|
686 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
687 |
|
688 CleanupStack::PushL( iapRecord ); |
|
689 |
|
690 iapRecord->SetRecordId( iCmId ); |
|
691 iapRecord->LoadL( iSession ); |
|
692 |
|
693 CleanupStack::Pop( iapRecord ); |
|
694 iIapRecord = iapRecord; |
|
695 |
|
696 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADIAPRECORDL_EXIT ); |
|
697 } |
|
698 |
|
699 // --------------------------------------------------------------------------- |
|
700 // CCmPluginBaseEng::LoadProxySettingL |
|
701 // --------------------------------------------------------------------------- |
|
702 // |
|
703 void CCmPluginBaseEng::LoadProxyRecordL() |
|
704 { |
|
705 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADPROXYSETTINGL_ENTRY ); |
|
706 |
|
707 // Load Proxy record. |
|
708 CMDBRecordSet<CCDProxiesRecord>* proxieRS = |
|
709 new( ELeave ) CMDBRecordSet<CCDProxiesRecord>( KCDTIdProxiesRecord ); |
|
710 CleanupStack::PushL(proxieRS); |
|
711 |
|
712 // Now try to find the linked proxy record. |
|
713 // Create new record. |
|
714 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
715 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
716 CleanupStack::PushL( proxyRecord ); |
|
717 |
|
718 // Prime record. |
|
719 TPtrC serviceType( iIapRecord->iServiceType ); |
|
720 proxyRecord->iServiceType.SetL( serviceType ); |
|
721 proxieRS->iRecords.AppendL( proxyRecord ); // Ownership transfered. |
|
722 |
|
723 CleanupStack::Pop( proxyRecord ); |
|
724 proxyRecord = NULL; |
|
725 |
|
726 if ( proxieRS->FindL(iSession) ) |
|
727 { |
|
728 TInt i( 0 ); |
|
729 while ( i < proxieRS->iRecords.Count() ) |
|
730 // Now that we have a list of services with the proper service type |
|
731 // search for our proxy record and remove it from the array, |
|
732 // then destroy the array. |
|
733 { |
|
734 CCDProxiesRecord* proxyRecord = (*proxieRS)[i]; |
|
735 |
|
736 // Compare the record id of these 2 services. |
|
737 if ( TUint32( proxyRecord->iService ) == TUint32( iIapRecord->iService ) ) |
|
738 { |
|
739 iProxyRecord = proxyRecord; |
|
740 // Take ownership of this record. |
|
741 proxieRS->iRecords.Remove( i ); |
|
742 break; |
|
743 } |
|
744 ++i; |
|
745 } |
|
746 } |
|
747 |
|
748 proxieRS->iRecords.ResetAndDestroy(); |
|
749 |
|
750 if ( !iProxyRecord ) |
|
751 { |
|
752 // This creates a proxy record, where usage is disabled. |
|
753 EnableProxyL( EFalse ); |
|
754 } |
|
755 |
|
756 CleanupStack::PopAndDestroy( proxieRS ); |
|
757 |
|
758 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADPROXYSETTINGL_EXIT ); |
|
759 } |
|
760 |
|
761 // --------------------------------------------------------------------------- |
|
762 // CCmPluginBaseEng::LoadNetworkSettingL |
|
763 // --------------------------------------------------------------------------- |
|
764 // |
|
765 void CCmPluginBaseEng::LoadNetworkRecordL() |
|
766 { |
|
767 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADNETWORKSETTINGL_ENTRY ); |
|
768 |
|
769 CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>( |
|
770 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
771 CleanupStack::PushL( networkRecord ); |
|
772 |
|
773 networkRecord->SetRecordId( iIapRecord->iNetwork ); |
|
774 TRAPD( err, networkRecord->LoadL( iSession ) ); |
|
775 if ( err == KErrNotFound ) |
|
776 { |
|
777 CleanupStack::PopAndDestroy( networkRecord ); |
|
778 |
|
779 networkRecord = static_cast<CCDNetworkRecord*>( |
|
780 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
781 } |
|
782 else |
|
783 // KErrNotFound -> doesn't matter. We will do it UpdateL() |
|
784 { |
|
785 User::LeaveIfError( err ); |
|
786 |
|
787 CleanupStack::Pop( networkRecord ); |
|
788 } |
|
789 |
|
790 iNetworkRecord = networkRecord; |
|
791 |
|
792 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADNETWORKSETTINGL_EXIT ); |
|
793 } |
|
794 |
|
795 // --------------------------------------------------------------------------- |
|
796 // CCmPluginBaseEng::LoadLocationSettingL |
|
797 // --------------------------------------------------------------------------- |
|
798 // |
|
799 void CCmPluginBaseEng::LoadLocationRecordL() |
|
800 { |
|
801 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_ENTRY ); |
|
802 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADLOCATIONSETTINGL_EXIT ); |
|
803 } |
|
804 |
|
805 // --------------------------------------------------------------------------- |
|
806 // CCmPluginBaseEng::PrepareToUpdateRecordsL |
|
807 // --------------------------------------------------------------------------- |
|
808 // |
|
809 void CCmPluginBaseEng::PrepareToUpdateRecordsL( |
|
810 CCmClientPluginInstance* aClientPluginInstance ) |
|
811 { |
|
812 OstTraceFunctionEntry0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_ENTRY ); |
|
813 |
|
814 //TODO, Add null checks for mandatory generic record pointers. |
|
815 // |
|
816 |
|
817 // Set the record attributes to bearer specific records. |
|
818 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
819 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
820 |
|
821 for ( TInt i = 0; i < aClientPluginInstance->iBearerSpecRecordArray.Count(); i++ ) |
|
822 { |
|
823 CCDRecordBase* record = static_cast<CCDRecordBase*>( |
|
824 aClientPluginInstance->iBearerSpecRecordArray[i] ); |
|
825 |
|
826 CopyAttributes( iapRecord, record ); |
|
827 } |
|
828 |
|
829 PreparePluginToUpdateRecordsL( |
|
830 aClientPluginInstance->iGenRecordArray, |
|
831 aClientPluginInstance->iBearerSpecRecordArray ); |
|
832 |
|
833 OstTraceFunctionExit0( CCMPLUGINBASEENG_PREPARETOUPDATERECORDSL_EXIT ); |
|
834 } |
|
835 |
|
836 // --------------------------------------------------------------------------- |
|
837 // CCmPluginBaseEng::UpdateIAPRecordL |
|
838 // --------------------------------------------------------------------------- |
|
839 // |
|
840 void CCmPluginBaseEng::UpdateIAPRecordL( |
|
841 CCmClientPluginInstance* aClientPluginInstance ) |
|
842 { |
|
843 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_ENTRY ); |
|
844 |
|
845 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
846 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
847 |
|
848 if ( iCmId == 0 ) |
|
849 { |
|
850 // Otherwise predefined iapid. |
|
851 if ( !iIapRecord->RecordId() ) |
|
852 { |
|
853 iIapRecord->SetRecordId( KCDNewRecordRequest ); |
|
854 } |
|
855 |
|
856 TUint32 id( 0 ); |
|
857 id = ServiceRecordId(); |
|
858 iIapRecord->iService = id; |
|
859 |
|
860 HBufC* name( NULL ); |
|
861 ServiceRecordNameLC( name ); |
|
862 iIapRecord->iServiceType.SetL( *name ); |
|
863 CleanupStack::PopAndDestroy( name ); |
|
864 |
|
865 BearerRecordIdL( id ); |
|
866 iIapRecord->iBearer = id; |
|
867 BearerRecordNameLC( name ); |
|
868 iIapRecord->iBearerType.SetL( *name ); |
|
869 CleanupStack::PopAndDestroy( name ); |
|
870 |
|
871 iIapRecord->iNetwork = iNetworkRecord->RecordId(); |
|
872 |
|
873 iIapRecord->iLocation = GetLocationIdL(); |
|
874 |
|
875 CopyAttributes( iapRecord, iIapRecord ); |
|
876 CheckIfNameModifiedL( iapRecord, iIapRecord ); |
|
877 |
|
878 iIapRecord->StoreL( iSession ); |
|
879 // Have to be "reloaded" to get possible default values |
|
880 // from template records. |
|
881 iIapRecord->LoadL( iSession ); |
|
882 |
|
883 iCmId = iIapRecord->RecordId(); |
|
884 aClientPluginInstance->iIapId = iCmId; |
|
885 |
|
886 CCDIAPRecord* tempIapRecord = static_cast<CCDIAPRecord*>( |
|
887 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
888 CleanupStack::PushL( tempIapRecord ); |
|
889 CopyRecordFieldsL( *iIapRecord, *tempIapRecord ); |
|
890 tempIapRecord->SetElementId( iIapRecord->ElementId() ); |
|
891 |
|
892 aClientPluginInstance->iGenRecordArray.Remove( KIapRecordIndex ); |
|
893 delete iapRecord; |
|
894 iapRecord = NULL; |
|
895 |
|
896 aClientPluginInstance->iGenRecordArray.InsertL( |
|
897 static_cast<CommsDat::CCDRecordBase*>( tempIapRecord ), |
|
898 KIapRecordIndex ); |
|
899 |
|
900 CleanupStack::Pop( tempIapRecord ); |
|
901 } |
|
902 else |
|
903 { |
|
904 delete iIapRecord; |
|
905 iIapRecord = NULL; |
|
906 iIapRecord = static_cast<CCDIAPRecord*>( |
|
907 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
908 CopyRecordFieldsL( *iapRecord, *iIapRecord ); |
|
909 |
|
910 iIapRecord->SetElementId( iapRecord->ElementId() ); |
|
911 iIapRecord->ModifyL( iSession ); |
|
912 } |
|
913 |
|
914 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEIAPRECORDL_EXIT ); |
|
915 } |
|
916 |
|
917 // --------------------------------------------------------------------------- |
|
918 // CCmPluginBaseEng::UpdateProxyRecordL |
|
919 // --------------------------------------------------------------------------- |
|
920 // |
|
921 void CCmPluginBaseEng::UpdateProxyRecordL( |
|
922 CCmClientPluginInstance* aClientPluginInstance ) |
|
923 { |
|
924 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_ENTRY ); |
|
925 |
|
926 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
927 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
928 |
|
929 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
930 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
931 |
|
932 if ( !iapRecord || !proxyRecord ) |
|
933 { |
|
934 User::Leave( KErrCorrupt ); |
|
935 } |
|
936 |
|
937 CopyAttributes( iapRecord, proxyRecord ); |
|
938 CheckIfNameModifiedL( iapRecord, proxyRecord ); |
|
939 |
|
940 delete iProxyRecord; |
|
941 iProxyRecord = NULL; |
|
942 iProxyRecord = static_cast<CCDProxiesRecord*>( |
|
943 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
944 CopyRecordFieldsL( *proxyRecord, *iProxyRecord ); |
|
945 iProxyRecord->SetElementId( proxyRecord->ElementId() ); |
|
946 |
|
947 if ( !iProxyRecord->RecordId() ) |
|
948 { |
|
949 // New proxy setting -> create new record. |
|
950 iProxyRecord->iService = iServiceRecord->RecordId(); |
|
951 iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType ); |
|
952 |
|
953 // By default protocol is set to "http". |
|
954 if ( TPtrC( proxyRecord->iProtocolName ).Length() == 0 ) |
|
955 { |
|
956 iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName ); |
|
957 } |
|
958 |
|
959 iProxyRecord->SetRecordId( KCDNewRecordRequest ); |
|
960 iProxyRecord->StoreL( iSession ); |
|
961 // Have to be "reloaded" to get possible default values from template records. |
|
962 iProxyRecord->LoadL( iSession ); |
|
963 |
|
964 proxyRecord->SetElementId( iProxyRecord->ElementId() ); |
|
965 } |
|
966 else |
|
967 // Already existing record -> update only. |
|
968 { |
|
969 iProxyRecord->ModifyL( iSession ); |
|
970 } |
|
971 CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); |
|
972 |
|
973 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT ); |
|
974 } |
|
975 |
|
976 // --------------------------------------------------------------------------- |
|
977 // CCmPluginBaseEng::UpdateMetadataRecordL |
|
978 // --------------------------------------------------------------------------- |
|
979 // |
|
980 void CCmPluginBaseEng::UpdateMetadataRecordL( |
|
981 CCmClientPluginInstance* aClientPluginInstance ) |
|
982 { |
|
983 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_ENTRY ); |
|
984 |
|
985 CCDIAPRecord* clientIapRecord = static_cast<CCDIAPRecord*>( |
|
986 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
987 |
|
988 CCDIAPMetadataRecord* clientMetadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
989 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
990 |
|
991 // Adjust client side metadata record attributes and name if needed. |
|
992 CopyAttributes( clientIapRecord, clientMetadataRecord ); |
|
993 CheckIfNameModifiedL( clientIapRecord, clientMetadataRecord ); |
|
994 |
|
995 // Make a copy of client's metadata record and save to database. |
|
996 delete iMetaDataRecord; |
|
997 iMetaDataRecord = NULL; |
|
998 iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); |
|
999 |
|
1000 CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord ); |
|
1001 |
|
1002 iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() ); |
|
1003 |
|
1004 if ( !iMetaDataRecord->RecordId() ) |
|
1005 { |
|
1006 iMetaDataRecord->iIAP = IAPRecordElementId(); |
|
1007 iMetaDataRecord->SetRecordId( KCDNewRecordRequest ); |
|
1008 iMetaDataRecord->StoreL( iSession ); |
|
1009 // Have to be "reloaded" to get possible default values from template records. |
|
1010 iMetaDataRecord->LoadL( iSession ); |
|
1011 |
|
1012 clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() ); |
|
1013 } |
|
1014 else |
|
1015 { |
|
1016 iMetaDataRecord->ModifyL( iSession ); |
|
1017 } |
|
1018 CopyRecordFieldsL( *iMetaDataRecord, *clientMetadataRecord ); |
|
1019 |
|
1020 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT ); |
|
1021 } |
|
1022 |
|
1023 // --------------------------------------------------------------------------- |
|
1024 // CCmPluginBaseEng::UpdateServiceRecordL |
|
1025 // --------------------------------------------------------------------------- |
|
1026 // |
|
1027 void CCmPluginBaseEng::UpdateServiceRecordL( |
|
1028 CCmClientPluginInstance* aClientPluginInstance ) |
|
1029 { |
|
1030 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_ENTRY ); |
|
1031 |
|
1032 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
1033 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
1034 |
|
1035 CCDRecordBase* serviceRecord = static_cast<CCDRecordBase*>( |
|
1036 aClientPluginInstance->iGenRecordArray[KServiceRecordIndex] ); |
|
1037 |
|
1038 CopyAttributes( iapRecord, serviceRecord ); |
|
1039 |
|
1040 UpdateServiceRecordL( |
|
1041 aClientPluginInstance->iGenRecordArray, |
|
1042 aClientPluginInstance->iBearerSpecRecordArray ); |
|
1043 |
|
1044 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATESERVICERECORDL_EXIT ); |
|
1045 } |
|
1046 |
|
1047 // --------------------------------------------------------------------------- |
|
1048 // CCmPluginBaseEng::UpdateNetworkRecordL |
|
1049 // --------------------------------------------------------------------------- |
|
1050 // |
|
1051 void CCmPluginBaseEng::UpdateNetworkRecordL( |
|
1052 CCmClientPluginInstance* aClientPluginInstance ) |
|
1053 { |
|
1054 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_ENTRY ); |
|
1055 |
|
1056 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
1057 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
1058 |
|
1059 CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>( |
|
1060 aClientPluginInstance->iGenRecordArray[KNetworkRecordIndex] ); |
|
1061 |
|
1062 CopyAttributes( iapRecord, networkRecord ); |
|
1063 |
|
1064 delete iNetworkRecord; |
|
1065 iNetworkRecord = NULL; |
|
1066 |
|
1067 CheckIfNameModifiedL( iapRecord, networkRecord ); |
|
1068 |
|
1069 iNetworkRecord = static_cast<CCDNetworkRecord*>( |
|
1070 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
1071 CopyRecordFieldsL( *networkRecord, *iNetworkRecord ); |
|
1072 |
|
1073 iNetworkRecord->SetElementId( networkRecord->ElementId() ); |
|
1074 |
|
1075 if ( !iNetworkRecord->RecordId() ) |
|
1076 { |
|
1077 iNetworkRecord->SetRecordId( KCDNewRecordRequest ); |
|
1078 iNetworkRecord->StoreL( iSession ); |
|
1079 // Have to be "reloaded" to get possible default values from template records. |
|
1080 iNetworkRecord->LoadL( iSession ); |
|
1081 |
|
1082 networkRecord->SetElementId( iNetworkRecord->ElementId() ); |
|
1083 } |
|
1084 else |
|
1085 { |
|
1086 iNetworkRecord->ModifyL( iSession ); |
|
1087 } |
|
1088 CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); |
|
1089 |
|
1090 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT ); |
|
1091 } |
|
1092 |
|
1093 // --------------------------------------------------------------------------- |
|
1094 // CCmPluginBaseEng::UpdateLocationRecordL |
|
1095 // --------------------------------------------------------------------------- |
|
1096 // |
|
1097 void CCmPluginBaseEng::UpdateLocationRecordL( |
|
1098 CCmClientPluginInstance* /*aClientPluginInstance*/ ) |
|
1099 { |
|
1100 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_ENTRY ); |
|
1101 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATELOCATIONRECORDL_EXIT ); |
|
1102 } |
|
1103 |
|
1104 // --------------------------------------------------------------------------- |
|
1105 // CCmPluginBaseEng::UpdateConnPrefSettingL |
|
1106 // --------------------------------------------------------------------------- |
|
1107 // |
|
1108 void CCmPluginBaseEng::UpdateConnPrefSettingL() |
|
1109 { |
|
1110 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_ENTRY ); |
|
1111 OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATECONNPREFSETTINGL_EXIT ); |
|
1112 } |
|
1113 |
|
1114 // --------------------------------------------------------------------------- |
|
1115 // CCmPluginBaseEng::EnableProxyL |
|
1116 // --------------------------------------------------------------------------- |
|
1117 // |
|
1118 void CCmPluginBaseEng::EnableProxyL( TBool aEnable ) |
|
1119 { |
|
1120 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLEPROXYL_ENTRY ); |
|
1121 |
|
1122 if ( !iServiceRecord ) |
|
1123 { |
|
1124 User::Leave( KErrNotSupported ); |
|
1125 } |
|
1126 |
|
1127 if ( !iProxyRecord ) |
|
1128 { |
|
1129 iProxyRecord = static_cast<CCDProxiesRecord*>( |
|
1130 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
1131 } |
|
1132 |
|
1133 iProxyRecord->iUseProxyServer = aEnable; |
|
1134 |
|
1135 OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLEPROXYL_EXIT ); |
|
1136 } |
|
1137 |
|
1138 // --------------------------------------------------------------------------- |
|
1139 // CCmPluginBaseEng::EnableLocationL |
|
1140 // --------------------------------------------------------------------------- |
|
1141 // |
|
1142 void CCmPluginBaseEng::EnableLocationL( TBool aEnable ) |
|
1143 { |
|
1144 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENABLELOCATIONL_ENTRY ); |
|
1145 |
|
1146 // Not supported anymore |
|
1147 iLocationEnabled = aEnable; |
|
1148 |
|
1149 OstTraceFunctionExit0( CCMPLUGINBASEENG_ENABLELOCATIONL_EXIT ); |
|
1150 } |
|
1151 |
|
1152 // --------------------------------------------------------------------------- |
|
1153 // CCmPluginBaseEng::LoadWapRecordL |
|
1154 // --------------------------------------------------------------------------- |
|
1155 // |
|
1156 void CCmPluginBaseEng::LoadWapRecordL() |
|
1157 { |
|
1158 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADWAPRECORDL_ENTRY ); |
|
1159 |
|
1160 iWapIPBearerRecord = FindWAPRecordL(); |
|
1161 if ( iWapIPBearerRecord ) |
|
1162 { |
|
1163 CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
1164 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
1165 |
|
1166 CleanupStack::PushL( wapApRecord ); |
|
1167 |
|
1168 wapApRecord->SetRecordId( iWapIPBearerRecord->iWAPAccessPointId ); |
|
1169 TRAPD( err, wapApRecord->LoadL( iSession ) ); |
|
1170 if ( err == KErrNotFound ) |
|
1171 { |
|
1172 CleanupStack::PopAndDestroy( wapApRecord ); |
|
1173 |
|
1174 wapApRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
1175 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
1176 } |
|
1177 else |
|
1178 { |
|
1179 User::LeaveIfError( err ); |
|
1180 |
|
1181 CleanupStack::Pop( wapApRecord ); |
|
1182 } |
|
1183 |
|
1184 iWapAPRecord = wapApRecord; |
|
1185 } |
|
1186 else |
|
1187 // No WAP record found -> create a new one |
|
1188 { |
|
1189 NewWapRecordL(); |
|
1190 } |
|
1191 |
|
1192 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADWAPRECORDL_EXIT ); |
|
1193 } |
|
1194 |
|
1195 // --------------------------------------------------------------------------- |
|
1196 // CCmPluginBaseEng::LoadMetadataRecordL |
|
1197 // --------------------------------------------------------------------------- |
|
1198 // |
|
1199 void CCmPluginBaseEng::LoadMetadataRecordL() |
|
1200 { |
|
1201 OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_ENTRY ); |
|
1202 |
|
1203 iMetaDataRecord = FindMetadataRecordL(); |
|
1204 |
|
1205 OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADSEAMLESSNESSRECORDL_EXIT ); |
|
1206 } |
|
1207 |
|
1208 // --------------------------------------------------------------------------- |
|
1209 // CCmPluginBaseEng::UpdateWapRecordL |
|
1210 // --------------------------------------------------------------------------- |
|
1211 // |
|
1212 void CCmPluginBaseEng::UpdateWapRecordL( |
|
1213 CCmClientPluginInstance* aClientPluginInstance ) |
|
1214 { |
|
1215 OstTraceFunctionEntry0( CCMPLUGINBASEENG_UPDATEWAPRECORDL_ENTRY ); |
|
1216 |
|
1217 delete iWapAPRecord; |
|
1218 iWapAPRecord = NULL; |
|
1219 |
|
1220 delete iWapIPBearerRecord; |
|
1221 iWapIPBearerRecord = NULL; |
|
1222 |
|
1223 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
1224 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
1225 |
|
1226 CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
1227 aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); |
|
1228 |
|
1229 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
1230 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
1231 |
|
1232 CopyAttributes( iapRecord, wapAPRecord ); |
|
1233 CopyAttributes( iapRecord, wapIPBearerRecord ); |
|
1234 |
|
1235 CheckIfNameModifiedL( iapRecord, wapAPRecord ); |
|
1236 CheckIfNameModifiedL( iapRecord, wapIPBearerRecord ); |
|
1237 |
|
1238 // WAP AP record |
|
1239 iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
1240 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
1241 CopyRecordFieldsL( *wapAPRecord, *iWapAPRecord ); |
|
1242 iWapAPRecord->SetElementId( wapAPRecord->ElementId() ); |
|
1243 |
|
1244 // WAP IP Bearer record |
|
1245 iWapIPBearerRecord =static_cast<CCDWAPIPBearerRecord*>( |
|
1246 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); |
|
1247 CopyRecordFieldsL( *wapIPBearerRecord, *iWapIPBearerRecord ); |
|
1248 iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() ); |
|
1249 |
|
1250 if ( !iWapAPRecord->RecordId() ) |
|
1251 { |
|
1252 iWapAPRecord->SetRecordId( KCDNewRecordRequest ); |
|
1253 iWapAPRecord->StoreL(iSession ); |
|
1254 // Have to be "reloaded" to get possible default values from template records. |
|
1255 iWapAPRecord->LoadL(iSession ); |
|
1256 |
|
1257 wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); |
|
1258 } |
|
1259 else |
|
1260 { |
|
1261 iWapAPRecord->ModifyL( iSession ); |
|
1262 } |
|
1263 CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord ); |
|
1264 |
|
1265 if ( !iWapIPBearerRecord->RecordId() ) |
|
1266 { |
|
1267 iWapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId(); |
|
1268 iWapIPBearerRecord->iWAPIAP = iapRecord->RecordId(); |
|
1269 |
|
1270 iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest ); |
|
1271 iWapIPBearerRecord->StoreL( iSession ); |
|
1272 // Have to be "reloaded" to get possible default values from template records. |
|
1273 iWapIPBearerRecord->LoadL( iSession ); |
|
1274 |
|
1275 wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); |
|
1276 } |
|
1277 else |
|
1278 { |
|
1279 iWapIPBearerRecord->ModifyL( iSession ); |
|
1280 } |
|
1281 CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord ); |
|
1282 |
|
1283 OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT ); |
|
1284 } |
|
1285 |
|
1286 // --------------------------------------------------------------------------- |
|
1287 // CCmPluginBaseEng::NewWapRecordL |
|
1288 // --------------------------------------------------------------------------- |
|
1289 // |
|
1290 void CCmPluginBaseEng::NewWapRecordL() |
|
1291 { |
|
1292 OstTraceFunctionEntry0( CCMPLUGINBASEENG_NEWWAPRECORDL_ENTRY ); |
|
1293 |
|
1294 if ( !iWapIPBearerRecord ) |
|
1295 { |
|
1296 iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
1297 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); |
|
1298 iWapIPBearerRecord->iWAPProxyPort = 0; |
|
1299 iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented; |
|
1300 iWapIPBearerRecord->iWAPSecurity = EFalse; |
|
1301 } |
|
1302 |
|
1303 if ( !iWapAPRecord ) |
|
1304 { |
|
1305 iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
1306 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
1307 // SMS bearer is not supported by this version. |
|
1308 iWapAPRecord->iWAPCurrentBearer.SetL( TPtrC( KCDTypeNameWAPIPBearer ) ); |
|
1309 } |
|
1310 |
|
1311 OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWWAPRECORDL_EXIT ); |
|
1312 } |
|
1313 |
|
1314 // --------------------------------------------------------------------------- |
|
1315 // CCmPluginBaseEng::NewMetadataRecordL |
|
1316 // --------------------------------------------------------------------------- |
|
1317 // |
|
1318 CCDIAPMetadataRecord* CCmPluginBaseEng::NewMetadataRecordL( TBool aSetDef ) |
|
1319 { |
|
1320 OstTraceFunctionEntry0( CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_ENTRY ); |
|
1321 |
|
1322 CCDIAPMetadataRecord* record = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); |
|
1323 |
|
1324 if ( aSetDef ) |
|
1325 { |
|
1326 TRAPD( err, record->iSeamlessness = GetBearerInfoIntL( ECmSeamlessnessLevel ) ); |
|
1327 if ( err ) |
|
1328 { |
|
1329 record->iSeamlessness = ESeamlessnessConfirmFirst; |
|
1330 } |
|
1331 } |
|
1332 |
|
1333 OstTraceFunctionExit0( CCMPLUGINBASEENG_NEWSEAMLESSNESSRECORDL_EXIT ); |
|
1334 return record; |
|
1335 } |
|
1336 |
|
1337 // --------------------------------------------------------------------------- |
|
1338 // CCmPluginBaseEng::SetAttribute |
|
1339 // --------------------------------------------------------------------------- |
|
1340 // |
|
1341 void CCmPluginBaseEng::SetAttribute( |
|
1342 CCDRecordBase* aRecord, |
|
1343 TUint32 aAttribute, |
|
1344 TBool aSet ) |
|
1345 { |
|
1346 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETATTRIBUTE_ENTRY ); |
|
1347 |
|
1348 if ( aSet ) |
|
1349 { |
|
1350 aRecord->SetAttributes( aAttribute ); |
|
1351 } |
|
1352 else |
|
1353 { |
|
1354 aRecord->ClearAttributes( aAttribute ); |
|
1355 } |
|
1356 |
|
1357 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETATTRIBUTE_EXIT ); |
|
1358 } |
|
1359 |
|
1360 // --------------------------------------------------------------------------- |
|
1361 // CCmPluginBaseEng::CopyAttributes |
|
1362 // --------------------------------------------------------------------------- |
|
1363 // |
|
1364 void CCmPluginBaseEng::CopyAttributes( |
|
1365 CCDRecordBase* aSrcRecord, |
|
1366 CCDRecordBase* aDstRecord ) |
|
1367 { |
|
1368 OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY ); |
|
1369 |
|
1370 if ( !aSrcRecord || !aDstRecord ) |
|
1371 { |
|
1372 OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); |
|
1373 return; |
|
1374 } |
|
1375 |
|
1376 // Clear the target record attributes first. |
|
1377 aDstRecord->ClearAttributes( aDstRecord->Attributes() ); |
|
1378 aDstRecord->SetAttributes( aSrcRecord->Attributes() ); |
|
1379 |
|
1380 OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); |
|
1381 } |
|
1382 |
|
1383 // --------------------------------------------------------------------------- |
|
1384 // CCmPluginBaseEng::FindWAPRecordL |
|
1385 // --------------------------------------------------------------------------- |
|
1386 // |
|
1387 CCDWAPIPBearerRecord* CCmPluginBaseEng::FindWAPRecordL() |
|
1388 { |
|
1389 OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDWAPRECORDL_ENTRY ); |
|
1390 |
|
1391 CMDBRecordSet<CCDWAPIPBearerRecord>* wapRS = |
|
1392 new( ELeave ) CMDBRecordSet<CCDWAPIPBearerRecord>( KCDTIdWAPIPBearerRecord ); |
|
1393 CleanupStack::PushL( wapRS ); |
|
1394 |
|
1395 CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
1396 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); |
|
1397 |
|
1398 CleanupStack::PushL( wapBearerRecord ); |
|
1399 |
|
1400 wapBearerRecord->iWAPIAP = iCmId; |
|
1401 wapRS->iRecords.AppendL( wapBearerRecord ); |
|
1402 |
|
1403 CleanupStack::Pop( wapBearerRecord ); |
|
1404 wapBearerRecord = NULL; |
|
1405 |
|
1406 if ( wapRS->FindL( iSession ) ) |
|
1407 { |
|
1408 wapBearerRecord = static_cast<CCDWAPIPBearerRecord*>( wapRS->iRecords[0] ); |
|
1409 |
|
1410 // Take over the ownership of this record. |
|
1411 wapRS->iRecords.Remove( 0 ); |
|
1412 } |
|
1413 |
|
1414 CleanupStack::PopAndDestroy( wapRS ); |
|
1415 |
|
1416 OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDWAPRECORDL_EXIT ); |
|
1417 return wapBearerRecord; |
|
1418 } |
|
1419 |
|
1420 // --------------------------------------------------------------------------- |
|
1421 // CCmPluginBaseEng::FindSeamlessnessRecordL |
|
1422 // --------------------------------------------------------------------------- |
|
1423 // |
|
1424 CCDIAPMetadataRecord* CCmPluginBaseEng::FindMetadataRecordL() |
|
1425 { |
|
1426 OstTraceFunctionEntry0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_ENTRY ); |
|
1427 |
|
1428 CMDBRecordSet<CCDIAPMetadataRecord>* metadataRecordSet = |
|
1429 new( ELeave ) CMDBRecordSet<CCDIAPMetadataRecord>( iMetadataTableId ); |
|
1430 CleanupStack::PushL( metadataRecordSet ); |
|
1431 |
|
1432 CCDIAPMetadataRecord* metadataRecord = |
|
1433 new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); |
|
1434 CleanupStack::PushL( metadataRecord ); |
|
1435 |
|
1436 metadataRecord->iIAP = IAPRecordElementId(); |
|
1437 metadataRecordSet->iRecords.AppendL( metadataRecord ); |
|
1438 |
|
1439 CleanupStack::Pop( metadataRecord ); |
|
1440 metadataRecord = NULL; |
|
1441 |
|
1442 if ( metadataRecordSet->FindL( iSession ) ) |
|
1443 { |
|
1444 CMDBRecordBase* record = metadataRecordSet->iRecords[0]; |
|
1445 |
|
1446 metadataRecord = NewMetadataRecordL( EFalse ); |
|
1447 metadataRecord->SetRecordId( record->RecordId() ); |
|
1448 |
|
1449 // This can leave only in case of OOM. |
|
1450 metadataRecord->LoadL( iSession ); |
|
1451 } |
|
1452 else |
|
1453 { |
|
1454 metadataRecord = NewMetadataRecordL( ETrue ); |
|
1455 } |
|
1456 |
|
1457 CleanupStack::PopAndDestroy( metadataRecordSet ); |
|
1458 |
|
1459 OstTraceFunctionExit0( CCMPLUGINBASEENG_FINDSEAMLESSNESSRECORDL_EXIT ); |
|
1460 return metadataRecord; |
|
1461 } |
|
1462 |
|
1463 // --------------------------------------------------------------------------- |
|
1464 // CCmPluginBaseEng::DoMakeValidNameL |
|
1465 // --------------------------------------------------------------------------- |
|
1466 // |
|
1467 HBufC* CCmPluginBaseEng::DoMakeValidNameL( |
|
1468 const TDesC& aName, |
|
1469 const TUint32& aIapId ) |
|
1470 { |
|
1471 OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY ); |
|
1472 |
|
1473 const TInt decimalBase = 10; |
|
1474 TBool changed( EFalse ); |
|
1475 HBufC* temp = HBufC::NewLC( KApMaxConnNameLength ); |
|
1476 HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength ); |
|
1477 |
|
1478 HBufC* corrname = EnsureMaxLengthLC( aName, changed ); |
|
1479 *temp = *corrname; |
|
1480 TInt postfix( 0 ); |
|
1481 TInt pf( 0 ); |
|
1482 TInt i( 0 ); |
|
1483 TBool valid ( EFalse ); |
|
1484 |
|
1485 TPtrC prefix = GetPrefix( *corrname ); |
|
1486 |
|
1487 postfix = GetPostfix( *temp, prefix ); |
|
1488 postfix = -1; |
|
1489 do |
|
1490 { |
|
1491 valid = IsValidNameL( *temp, aIapId ); |
|
1492 if ( !valid ) |
|
1493 { |
|
1494 changed = ETrue; |
|
1495 postfix++; |
|
1496 // Check the length of postfix, check text length accordingly. |
|
1497 pf = postfix; |
|
1498 for ( i = 1; i < decimalBase; i++ ) |
|
1499 { |
|
1500 pf /= decimalBase; |
|
1501 if ( !pf ) |
|
1502 break; |
|
1503 } |
|
1504 TPtr sgdptr( temp->Des() ); |
|
1505 TPtr sgdptr2( temp2->Des() ); |
|
1506 if ( postfix ) |
|
1507 { |
|
1508 if ( postfix < decimalBase ) |
|
1509 { |
|
1510 sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 ); |
|
1511 } |
|
1512 else |
|
1513 { |
|
1514 sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 2 ); |
|
1515 } |
|
1516 } |
|
1517 else |
|
1518 { |
|
1519 sgdptr2 = prefix.Left( KApMaxConnNameLength ); |
|
1520 } |
|
1521 if ( postfix ) |
|
1522 { |
|
1523 TBuf<KMaxPostfixLength> postfixString; |
|
1524 if ( postfix >= decimalBase ) |
|
1525 { |
|
1526 postfixString.Format( KFormatLargePostfix, postfix ); |
|
1527 // TODO: AknTextUtils::LanguageSpecificNumberConversion( postfixString ); |
|
1528 } |
|
1529 else |
|
1530 { |
|
1531 postfixString.Format( KFormatPostfix, postfix ); |
|
1532 // TODO: AknTextUtils::LanguageSpecificNumberConversion( postfixString ); |
|
1533 } |
|
1534 sgdptr.Format( KFormatNameWithPostfix, &sgdptr2, &postfixString ); |
|
1535 } |
|
1536 else |
|
1537 { |
|
1538 sgdptr.Format( KFormatNoPostfix, &sgdptr2 ); |
|
1539 } |
|
1540 } |
|
1541 } while ( !valid ); |
|
1542 |
|
1543 CleanupStack::PopAndDestroy( corrname ); |
|
1544 CleanupStack::PopAndDestroy( temp2 ); |
|
1545 |
|
1546 if ( changed ) |
|
1547 { |
|
1548 CleanupStack::Pop( temp ); |
|
1549 } |
|
1550 else |
|
1551 { |
|
1552 CleanupStack::PopAndDestroy( temp ); |
|
1553 temp = NULL; |
|
1554 } |
|
1555 |
|
1556 OstTraceFunctionExit0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_EXIT ); |
|
1557 return temp; |
|
1558 } |
|
1559 |
|
1560 // --------------------------------------------------------------------------- |
|
1561 // CCmPluginBaseEng::EnsureMaxLengthLC |
|
1562 // --------------------------------------------------------------------------- |
|
1563 // |
|
1564 HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( |
|
1565 const TDesC& aName, |
|
1566 TBool& aChanged ) |
|
1567 { |
|
1568 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_ENTRY ); |
|
1569 |
|
1570 TInt length = aName.Length(); |
|
1571 |
|
1572 aChanged = EFalse; |
|
1573 |
|
1574 if ( !length ) |
|
1575 { |
|
1576 // Name is required. |
|
1577 User::Leave( KErrArgument ); |
|
1578 } |
|
1579 |
|
1580 HBufC* corrname; |
|
1581 if ( KApMaxConnNameLength < length ) |
|
1582 { |
|
1583 // Name too long, truncate. |
|
1584 corrname = aName.Left( KApMaxConnNameLength ).AllocLC(); |
|
1585 aChanged = ETrue; |
|
1586 } |
|
1587 else |
|
1588 { |
|
1589 corrname = aName.AllocLC(); |
|
1590 corrname->Des().Trim(); |
|
1591 if ( corrname->Length() == 0 ) |
|
1592 { |
|
1593 User::Leave( KErrArgument ); |
|
1594 } |
|
1595 // Comes here only if name is valid. |
|
1596 if ( corrname->Length() != aName.Length() ) |
|
1597 { |
|
1598 aChanged = ETrue; |
|
1599 } |
|
1600 } |
|
1601 |
|
1602 OstTraceFunctionExit0( CCMPLUGINBASEENG_ENSUREMAXLENGTHLC_EXIT ); |
|
1603 return corrname; |
|
1604 } |
|
1605 |
|
1606 // --------------------------------------------------------------------------- |
|
1607 // Given aName in the format <prefix> or <prefix><brace><integer><brace>, |
|
1608 // return a pointer to the leading part. |
|
1609 // That is, if there is trailing <space><integer>, |
|
1610 // then that is excluded; if there is no trailing part, then the original |
|
1611 // decriptor is returned. |
|
1612 // Examples: |
|
1613 // - "Foo" returns "Foo"; |
|
1614 // - "Foo 12" returns "Foo 12"; |
|
1615 // - "Foo(12)" returns "Foo"; |
|
1616 // - "Foo 12 (34)" returns "Foo 12 "; |
|
1617 // - "Foo bar" returns "Foo bar"; |
|
1618 // - "Foo " returns "Foo ". |
|
1619 // --------------------------------------------------------------------------- |
|
1620 TPtrC CCmPluginBaseEng::GetPrefix( const TDesC& aName ) |
|
1621 { |
|
1622 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPREFIX_ENTRY ); |
|
1623 |
|
1624 TPtrC prefix = aName; |
|
1625 TInt lastBrace = aName.LocateReverse('('); |
|
1626 if ( lastBrace != KErrNotFound ) |
|
1627 { |
|
1628 // aName looks like "<prefix><brace><something>". |
|
1629 // See if <something> is an integer number. |
|
1630 TPtrC num = aName.Right( aName.Length() - lastBrace - 1 ); |
|
1631 TInt val; |
|
1632 TLex lex( num ); |
|
1633 if ( lex.Val( val ) == KErrNone ) |
|
1634 { |
|
1635 // Yes, the trailer is an integer. |
|
1636 prefix.Set( aName.Left( lastBrace ) ); |
|
1637 } |
|
1638 } |
|
1639 |
|
1640 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPREFIX_EXIT ); |
|
1641 return prefix; |
|
1642 } |
|
1643 |
|
1644 |
|
1645 // --------------------------------------------------------------------------- |
|
1646 // If aName is constructed from aPrefix with a postfix, get the numeric |
|
1647 // value of the postfix, e.g: |
|
1648 // - GetPostfix( "Foo (3)", "Foo" ) == 3 |
|
1649 // - GetPostfix( "Foo 23 (45)", "Foo 23" ) == 45 |
|
1650 // If aName is the same as aPrefix, return 0, e.g.: |
|
1651 // - GetPostfix( "Foo", "Foo" ) == 0 |
|
1652 // If aName is not constructed from aPrefix, return -1, e.g.: |
|
1653 // - GetPostfix( "Foobar", "Foo" ) == -1 |
|
1654 // - GetPostfix( "Fo 23 45", "Foo" ) == -1 |
|
1655 // --------------------------------------------------------------------------- |
|
1656 TInt CCmPluginBaseEng::GetPostfix( const TDesC& aName, const TDesC& aPrefix ) |
|
1657 { |
|
1658 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPOSTFIX_ENTRY ); |
|
1659 |
|
1660 TInt postfix( KErrNotFound ); |
|
1661 TInt nameLength = aName.Length(); |
|
1662 TInt prefixLength = aPrefix.Length(); |
|
1663 if ( nameLength >= prefixLength && aName.FindF( aPrefix ) == 0 ) |
|
1664 { |
|
1665 // aName is longer or equal length, and |
|
1666 // aPrefix can be found in the beginning of aName. |
|
1667 if ( nameLength == prefixLength ) |
|
1668 { |
|
1669 // They have the same length; they equal. |
|
1670 postfix = 0; |
|
1671 } |
|
1672 else |
|
1673 { |
|
1674 if ( prefixLength > 0 ) |
|
1675 { |
|
1676 if ( aName[ prefixLength ] == '(' ) |
|
1677 { |
|
1678 // (Now we know that aName is longer than aPrefix.) |
|
1679 // aName looks like "aPrefix<brace><something>". |
|
1680 // See if <something> is an integer number. |
|
1681 TPtrC num = aName.Right( nameLength - prefixLength - 1 ); |
|
1682 TBuf< KApMaxConnNameLength > pf; |
|
1683 pf = num; |
|
1684 // TODO AknTextUtils::ConvertDigitsTo( pf, EDigitTypeWestern ); |
|
1685 TInt val; |
|
1686 TLex lex( pf ); |
|
1687 if ( lex.Val( val ) == KErrNone ) |
|
1688 { |
|
1689 // Yes, the trailer is an integer. |
|
1690 if ( val > 0 ) |
|
1691 { |
|
1692 postfix = val; |
|
1693 } |
|
1694 else |
|
1695 { |
|
1696 // signal that it is invalid... |
|
1697 postfix = -1; |
|
1698 } |
|
1699 } |
|
1700 } |
|
1701 } |
|
1702 else |
|
1703 { |
|
1704 postfix = -1; |
|
1705 } |
|
1706 } |
|
1707 } |
|
1708 |
|
1709 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPOSTFIX_EXIT ); |
|
1710 return postfix; |
|
1711 } |
|
1712 |
|
1713 // --------------------------------------------------------------------------- |
|
1714 // CCmPluginBaseEng::IsValidNameL |
|
1715 // --------------------------------------------------------------------------- |
|
1716 // |
|
1717 TBool CCmPluginBaseEng::IsValidNameL( |
|
1718 const TDesC& aNameText, |
|
1719 const TUint32& aIapId ) |
|
1720 { |
|
1721 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISVALIDNAMEL_ENTRY ); |
|
1722 |
|
1723 TBool retVal( ETrue ); |
|
1724 |
|
1725 CMDBRecordSet<CCDIAPRecord>* iapRS = |
|
1726 new( ELeave ) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord); |
|
1727 CleanupStack::PushL(iapRS); |
|
1728 |
|
1729 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
1730 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
1731 CleanupStack::PushL( iapRecord ); |
|
1732 |
|
1733 // Prime record. |
|
1734 iapRecord->iRecordName.SetL( aNameText ); |
|
1735 iapRS->iRecords.AppendL( iapRecord ); |
|
1736 CleanupStack::Pop( iapRecord ); |
|
1737 iapRecord = NULL; |
|
1738 |
|
1739 if ( iapRS->FindL( iSession ) ) |
|
1740 { |
|
1741 if ( iCmId ) |
|
1742 { |
|
1743 // This is not a new CM. |
|
1744 for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i ) |
|
1745 { |
|
1746 if ( iapRS->iRecords[i]->RecordId() != aIapId ) |
|
1747 { |
|
1748 // Duplication because it's not our name. |
|
1749 retVal = EFalse; |
|
1750 break; |
|
1751 } |
|
1752 } |
|
1753 } |
|
1754 else |
|
1755 { |
|
1756 // New CM -> any occurence is a duplication. |
|
1757 retVal = EFalse; |
|
1758 } |
|
1759 } |
|
1760 |
|
1761 CleanupStack::PopAndDestroy( iapRS ); |
|
1762 |
|
1763 OstTraceFunctionExit0( CCMPLUGINBASEENG_ISVALIDNAMEL_EXIT ); |
|
1764 return retVal; |
|
1765 } |
|
1766 |
|
1767 // --------------------------------------------------------------------------- |
|
1768 // CCmPluginBaseEng::EscapeTextLC |
|
1769 // --------------------------------------------------------------------------- |
|
1770 // |
|
1771 HBufC* CCmPluginBaseEng::EscapeTextLC( const TDesC& aLiteral ) |
|
1772 { |
|
1773 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ESCAPETEXTLC_ENTRY ); |
|
1774 |
|
1775 TInt l( aLiteral.Length() ); |
|
1776 //> 2*, to ensure correct esc. even if ALL chars are quotes... |
|
1777 HBufC* retbuf = HBufC::NewLC( 2*l ); |
|
1778 TPtr ret = retbuf->Des(); |
|
1779 TUint quote( '\'' ); // TChar gives warnings in THUMB & ARMI |
|
1780 TInt i( 0 ); |
|
1781 |
|
1782 for ( i = 0; i < l; i++ ) |
|
1783 { |
|
1784 ret.Append( aLiteral[i] ); |
|
1785 if ( aLiteral[i] == quote ) |
|
1786 { |
|
1787 // Duplicate quote. |
|
1788 ret.Append( quote ); |
|
1789 } |
|
1790 } |
|
1791 |
|
1792 OstTraceFunctionExit0( CCMPLUGINBASEENG_ESCAPETEXTLC_EXIT ); |
|
1793 return retbuf; |
|
1794 } |
|
1795 |
|
1796 // --------------------------------------------------------------------------- |
|
1797 // CCmPluginBaseEng::SetDefaultNameL |
|
1798 // --------------------------------------------------------------------------- |
|
1799 // |
|
1800 void CCmPluginBaseEng::SetDefaultNameL( const TDesC& aName ) |
|
1801 { |
|
1802 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_ENTRY ); |
|
1803 |
|
1804 if ( iNamingMethod == ENamingNothing ) |
|
1805 { |
|
1806 iIapRecord->iRecordName.SetL( aName ); |
|
1807 } |
|
1808 else if ( iNamingMethod == ENamingUnique ) |
|
1809 { |
|
1810 HBufC* newName = DoMakeValidNameL( aName, iCmId ); |
|
1811 |
|
1812 if ( newName ) |
|
1813 // Name converted to unique. |
|
1814 { |
|
1815 CleanupStack::PushL( newName ); |
|
1816 iIapRecord->iRecordName.SetL( *newName ); |
|
1817 CleanupStack::PopAndDestroy( newName ); |
|
1818 } |
|
1819 else |
|
1820 { |
|
1821 iIapRecord->iRecordName.SetL( aName ); |
|
1822 } |
|
1823 } |
|
1824 else if ( iNamingMethod == ENamingNotAccept ) |
|
1825 { |
|
1826 if ( IsValidNameL( aName, iCmId ) ) |
|
1827 { |
|
1828 iIapRecord->iRecordName.SetL( aName ); |
|
1829 } |
|
1830 else |
|
1831 { |
|
1832 User::Leave( KErrArgument ); |
|
1833 } |
|
1834 } |
|
1835 else |
|
1836 { |
|
1837 User::Leave( KErrCorrupt ); |
|
1838 } |
|
1839 |
|
1840 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETDEFAULTNAMEL_EXIT ); |
|
1841 } |
|
1842 |
|
1843 // --------------------------------------------------------------------------- |
|
1844 // CCmPluginBaseEng::SetNameL |
|
1845 // --------------------------------------------------------------------------- |
|
1846 // |
|
1847 void CCmPluginBaseEng::SetNameL( |
|
1848 const TDesC& aName, |
|
1849 CommsDat::CCDRecordBase* aIapRecord, |
|
1850 const CMManager::TNamingMethod aNamingMethod ) |
|
1851 { |
|
1852 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETNAMEL_ENTRY ); |
|
1853 |
|
1854 if ( aNamingMethod == ENamingNothing ) |
|
1855 { |
|
1856 aIapRecord->iRecordName.SetL( aName ); |
|
1857 } |
|
1858 else if ( aNamingMethod == ENamingUnique ) |
|
1859 { |
|
1860 TUint32 iapid = aIapRecord->RecordId(); |
|
1861 HBufC* newName = DoMakeValidNameL( aName, iapid ); |
|
1862 |
|
1863 if ( newName ) |
|
1864 // Name converted to unique. |
|
1865 { |
|
1866 CleanupStack::PushL( newName ); |
|
1867 aIapRecord->iRecordName.SetL( *newName ); |
|
1868 CleanupStack::PopAndDestroy( newName ); |
|
1869 } |
|
1870 else |
|
1871 { |
|
1872 aIapRecord->iRecordName.SetL( aName ); |
|
1873 } |
|
1874 } |
|
1875 else if ( aNamingMethod == ENamingNotAccept ) |
|
1876 { |
|
1877 if ( IsValidNameL( aName, aIapRecord->RecordId() ) ) |
|
1878 { |
|
1879 aIapRecord->iRecordName.SetL( aName ); |
|
1880 } |
|
1881 else |
|
1882 { |
|
1883 User::Leave( KErrArgument ); |
|
1884 } |
|
1885 } |
|
1886 else |
|
1887 { |
|
1888 User::Leave( KErrCorrupt ); |
|
1889 } |
|
1890 |
|
1891 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETNAMEL_EXIT ); |
|
1892 } |
|
1893 |
|
1894 // --------------------------------------------------------------------------- |
|
1895 // CCmPluginBaseEng::CheckIfNameModifiedL |
|
1896 // --------------------------------------------------------------------------- |
|
1897 EXPORT_C void CCmPluginBaseEng::CheckIfNameModifiedL( |
|
1898 CCDRecordBase* aSrcRecord, |
|
1899 CCDRecordBase* aDestRecord ) const |
|
1900 { |
|
1901 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_ENTRY ); |
|
1902 |
|
1903 if ( !aSrcRecord || !aDestRecord ) |
|
1904 { |
|
1905 User::Leave( KErrCorrupt ); |
|
1906 } |
|
1907 |
|
1908 if ( !TPtrC( aSrcRecord->iRecordName ).CompareF( TPtrC( aDestRecord->iRecordName ) ) ) |
|
1909 { |
|
1910 // Names match. |
|
1911 OstTraceFunctionExit0( CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT ); |
|
1912 return; |
|
1913 } |
|
1914 |
|
1915 aDestRecord->iRecordName.SetL( TPtrC( aSrcRecord->iRecordName ) ); |
|
1916 |
|
1917 OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CHECKIFNAMEMODIFIEDL_EXIT ); |
|
1918 } |
|
1919 |
|
1920 // --------------------------------------------------------------------------- |
|
1921 // CCmPluginBaseEng::IAPRecordElementId |
|
1922 // --------------------------------------------------------------------------- |
|
1923 TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const |
|
1924 { |
|
1925 return ( KCDMaskShowField & iIapRecord->ElementId() ); |
|
1926 } |
|
1927 |
|
1928 // --------------------------------------------------------------------------- |
|
1929 // CCmPluginBaseEng::IsProtected |
|
1930 // --------------------------------------------------------------------------- |
|
1931 TBool CCmPluginBaseEng::IsProtected() const |
|
1932 { |
|
1933 OstTraceFunctionEntry0( CCMPLUGINBASEENG_ISPROTECTED_ENTRY ); |
|
1934 |
|
1935 return ( iIapRecord->Attributes() & ECDProtectedWrite ); |
|
1936 } |
|
1937 |
|
1938 // --------------------------------------------------------------------------- |
|
1939 // CCmPluginBaseEng::GetLocationIdL |
|
1940 // --------------------------------------------------------------------------- |
|
1941 TUint32 CCmPluginBaseEng::GetLocationIdL() const |
|
1942 { |
|
1943 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETLOCATIONIDL_ENTRY ); |
|
1944 |
|
1945 TUint32 locId( 0 ); |
|
1946 CMDBRecordSet<CCDLocationRecord>* locRS = |
|
1947 new( ELeave ) CMDBRecordSet<CCDLocationRecord>( KCDTIdLocationRecord ); |
|
1948 CleanupStack::PushL( locRS ); |
|
1949 |
|
1950 CCDLocationRecord* locRecord = static_cast<CCDLocationRecord*>( |
|
1951 CCDRecordBase::RecordFactoryL( KCDTIdLocationRecord ) ); |
|
1952 CleanupStack::PushL( locRecord ); |
|
1953 |
|
1954 locRecord->iRecordName.SetL( KLocationName ); |
|
1955 locRS->iRecords.AppendL( locRecord ); |
|
1956 CleanupStack::Pop( locRecord ); |
|
1957 |
|
1958 if ( locRS->FindL(iSession) ) |
|
1959 { |
|
1960 locRecord = static_cast<CCDLocationRecord*>( locRS->iRecords[0] ); |
|
1961 locId = locRecord->RecordId(); |
|
1962 } |
|
1963 else |
|
1964 { |
|
1965 User::Leave( KErrNotFound ); //TODO, what to do if not found. Can we create it? need study. |
|
1966 } |
|
1967 |
|
1968 CleanupStack::PopAndDestroy( locRS ); |
|
1969 |
|
1970 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETLOCATIONIDL_EXIT ); |
|
1971 return locId; |
|
1972 } |
|
1973 |
|
1974 // --------------------------------------------------------------------------- |
|
1975 // CCmPluginBaseEng::SetProxyServerNameL |
|
1976 // --------------------------------------------------------------------------- |
|
1977 void CCmPluginBaseEng::SetProxyServerNameL( |
|
1978 const TDesC& aProxyServer, |
|
1979 CCDRecordBase* aProxyRecord ) |
|
1980 { |
|
1981 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_ENTRY ); |
|
1982 |
|
1983 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( aProxyRecord ); |
|
1984 |
|
1985 proxyRecord->iServerName.SetL( aProxyServer ); |
|
1986 if ( !aProxyServer.Length() ) |
|
1987 { |
|
1988 proxyRecord->iUseProxyServer = EFalse; |
|
1989 } |
|
1990 else |
|
1991 { |
|
1992 proxyRecord->iUseProxyServer = ETrue; |
|
1993 } |
|
1994 |
|
1995 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETPROXYSERVERNAMEL_EXIT ); |
|
1996 } |
|
1997 |
|
1998 // --------------------------------------------------------------------------- |
|
1999 // CCmPluginBaseEng::CheckDNSServerAddressL |
|
2000 // --------------------------------------------------------------------------- |
|
2001 // |
|
2002 EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( |
|
2003 TBool aIPv6, |
|
2004 CMDBField<TDesC>& aDNS1, |
|
2005 CMDBField<TDesC>& aDNS2, |
|
2006 CMDBField<TBool>& aDNSFromServer ) |
|
2007 { |
|
2008 OstTraceFunctionEntry0( CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_ENTRY ); |
|
2009 |
|
2010 if ( !aDNSFromServer ) |
|
2011 { |
|
2012 if ( aIPv6 ) |
|
2013 { |
|
2014 if ( ClassifyIPv6Address( aDNS1 ) == EIPv6Unspecified ) |
|
2015 { |
|
2016 if ( ClassifyIPv6Address( aDNS2 ) != EIPv6Unspecified ) |
|
2017 { |
|
2018 aDNS1.SetL( aDNS2 ); |
|
2019 aDNS2.SetL( KDynamicIpv6Address ); |
|
2020 } |
|
2021 else |
|
2022 { |
|
2023 // Both are unspecified. |
|
2024 aDNSFromServer = ETrue; |
|
2025 } |
|
2026 } |
|
2027 } |
|
2028 else // IPv4 |
|
2029 { |
|
2030 if ( IsUnspecifiedIPv4Address( aDNS1 ) ) |
|
2031 { |
|
2032 if ( !IsUnspecifiedIPv4Address( aDNS2 ) ) |
|
2033 { |
|
2034 aDNS1.SetL( aDNS2 ); |
|
2035 aDNS2.SetL( KUnspecifiedIPv4 ); |
|
2036 } |
|
2037 else |
|
2038 { |
|
2039 // Both are unspecified. |
|
2040 aDNSFromServer = ETrue; |
|
2041 } |
|
2042 } |
|
2043 } |
|
2044 } |
|
2045 |
|
2046 OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_CHECKDNSSERVERADDRESSL_EXIT ); |
|
2047 } |
|
2048 |
|
2049 //----------------------------------------------------------------------------- |
|
2050 // CCmPluginBaseEng::GetGenericCmRecordsL |
|
2051 // ----------------------------------------------------------------------------- |
|
2052 EXPORT_C void CCmPluginBaseEng::GetPluginDataL( |
|
2053 CCmClientPluginInstance* aClientPluginInstance ) |
|
2054 { |
|
2055 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETPLUGINDATAL_ENTRY ); |
|
2056 |
|
2057 if ( !aClientPluginInstance ) |
|
2058 { |
|
2059 User::Leave( KErrCorrupt ); |
|
2060 } |
|
2061 |
|
2062 aClientPluginInstance->iGenRecordArray.ResetAndDestroy(); |
|
2063 aClientPluginInstance->iBearerSpecRecordArray.ResetAndDestroy(); |
|
2064 |
|
2065 aClientPluginInstance->iNamingMethod = iNamingMethod; |
|
2066 aClientPluginInstance->iLocationEnabled = iLocationEnabled; |
|
2067 |
|
2068 if ( iIapRecord ) |
|
2069 { |
|
2070 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2071 CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); |
|
2072 CleanupStack::PushL( iapRecord ); |
|
2073 CopyRecordFieldsL( *iIapRecord, *iapRecord ); |
|
2074 iapRecord->SetElementId( iIapRecord->ElementId() ); |
|
2075 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2076 static_cast<CommsDat::CCDRecordBase*>( iapRecord ) ); |
|
2077 CleanupStack::Pop( iapRecord ); |
|
2078 } |
|
2079 else |
|
2080 { |
|
2081 User::Leave( KErrNotFound ); |
|
2082 } |
|
2083 |
|
2084 if ( iServiceRecord ) |
|
2085 { |
|
2086 CCDRecordBase* serviceRecord = CopyServiceRecordL(); |
|
2087 serviceRecord->SetElementId( iServiceRecord->ElementId() ); |
|
2088 CleanupStack::PushL( serviceRecord ); |
|
2089 aClientPluginInstance->iGenRecordArray.AppendL( serviceRecord ); |
|
2090 CleanupStack::Pop( serviceRecord ); |
|
2091 } |
|
2092 else |
|
2093 { |
|
2094 User::Leave( KErrNotFound ); |
|
2095 } |
|
2096 |
|
2097 if ( iNetworkRecord ) |
|
2098 { |
|
2099 CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>( |
|
2100 CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); |
|
2101 CleanupStack::PushL( networkRecord ); |
|
2102 CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); |
|
2103 networkRecord->SetElementId( iNetworkRecord->ElementId() ); |
|
2104 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2105 static_cast<CommsDat::CCDRecordBase*>( networkRecord ) ); |
|
2106 CleanupStack::Pop( networkRecord ); |
|
2107 } |
|
2108 else |
|
2109 { |
|
2110 User::Leave( KErrNotFound ); |
|
2111 } |
|
2112 |
|
2113 if ( iWapAPRecord ) |
|
2114 { |
|
2115 CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
2116 CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) ); |
|
2117 CleanupStack::PushL( wapAPRecord ); |
|
2118 CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord ); |
|
2119 wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); |
|
2120 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2121 static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) ); |
|
2122 CleanupStack::Pop( wapAPRecord ); |
|
2123 } |
|
2124 else |
|
2125 { |
|
2126 User::Leave( KErrNotFound ); |
|
2127 } |
|
2128 |
|
2129 if ( iWapIPBearerRecord ) |
|
2130 { |
|
2131 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
2132 CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) ); |
|
2133 CleanupStack::PushL( wapIPBearerRecord ); |
|
2134 CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord ); |
|
2135 wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); |
|
2136 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2137 static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) ); |
|
2138 CleanupStack::Pop( wapIPBearerRecord ); |
|
2139 } |
|
2140 else |
|
2141 { |
|
2142 User::Leave( KErrNotFound ); |
|
2143 } |
|
2144 |
|
2145 if ( iMetaDataRecord ) |
|
2146 { |
|
2147 CCDIAPMetadataRecord* metadataRecord = |
|
2148 new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId ); |
|
2149 CleanupStack::PushL( metadataRecord ); |
|
2150 CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord ); |
|
2151 metadataRecord->SetElementId( iMetaDataRecord->ElementId() ); |
|
2152 // Record name is set/changed during update. |
|
2153 |
|
2154 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2155 static_cast<CommsDat::CCDRecordBase*>( metadataRecord ) ); |
|
2156 CleanupStack::Pop( metadataRecord ); |
|
2157 } |
|
2158 else |
|
2159 { |
|
2160 aClientPluginInstance->iGenRecordArray.AppendL( NULL ); |
|
2161 } |
|
2162 |
|
2163 // Location record does not need to be loaded |
|
2164 aClientPluginInstance->iGenRecordArray.AppendL( NULL ); |
|
2165 |
|
2166 if ( iProxyRecord ) |
|
2167 { |
|
2168 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2169 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2170 CleanupStack::PushL( proxyRecord ); |
|
2171 CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); |
|
2172 proxyRecord->SetElementId( iProxyRecord->ElementId() ); |
|
2173 aClientPluginInstance->iGenRecordArray.AppendL( |
|
2174 static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) ); |
|
2175 CleanupStack::Pop( proxyRecord ); |
|
2176 } |
|
2177 else |
|
2178 { |
|
2179 aClientPluginInstance->iGenRecordArray.AppendL( NULL ); |
|
2180 } |
|
2181 |
|
2182 GetBearerSpecificRecordsL( aClientPluginInstance->iBearerSpecRecordArray ); |
|
2183 |
|
2184 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETPLUGINDATAL_EXIT ); |
|
2185 } |
|
2186 |
|
2187 //----------------------------------------------------------------------------- |
|
2188 // CCmPluginBaseEng::GetIntAttributeL |
|
2189 // ----------------------------------------------------------------------------- |
|
2190 EXPORT_C TUint32 CCmPluginBaseEng::GetIntAttributeL( |
|
2191 TUint32 aAttribute, |
|
2192 CCmClientPluginInstance* aClientPluginInstance ) |
|
2193 { |
|
2194 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETINTATTRIBUTEL_ENTRY ); |
|
2195 |
|
2196 TUint32 retVal( 0 ); |
|
2197 |
|
2198 switch ( aAttribute ) |
|
2199 { |
|
2200 case ECmIapId: // If the CM has an ECmIapId then the ECmIapId is the ECmId. |
|
2201 case ECmId: |
|
2202 { |
|
2203 if ( iBearerType == KUidEmbeddedDestination ) |
|
2204 { |
|
2205 retVal = GetBearerIntAttributeL( |
|
2206 aAttribute, |
|
2207 aClientPluginInstance->iGenRecordArray, |
|
2208 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2209 } |
|
2210 else |
|
2211 { |
|
2212 retVal = static_cast<CCDIAPRecord*>( |
|
2213 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId(); |
|
2214 } |
|
2215 } |
|
2216 break; |
|
2217 case ECmWapId: |
|
2218 { |
|
2219 retVal = static_cast<CCDWAPIPBearerRecord*>( |
|
2220 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) |
|
2221 ->iWAPAccessPointId; |
|
2222 } |
|
2223 break; |
|
2224 case ECmIapServiceId: |
|
2225 { |
|
2226 retVal = static_cast<CCDIAPRecord*>( |
|
2227 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->iService; |
|
2228 } |
|
2229 break; |
|
2230 case ECmBearerType: |
|
2231 { |
|
2232 retVal = iBearerType; |
|
2233 } |
|
2234 break; |
|
2235 case ECmDefaultPriority: |
|
2236 { |
|
2237 retVal = KDataMobilitySelectionPolicyPriorityWildCard; |
|
2238 } |
|
2239 break; |
|
2240 case ECmDefaultUiPriority: |
|
2241 { |
|
2242 retVal = KDataMobilitySelectionPolicyPriorityWildCard; |
|
2243 } |
|
2244 break; |
|
2245 case ECmNamingMethod: |
|
2246 { |
|
2247 retVal = iNamingMethod; |
|
2248 } |
|
2249 break; |
|
2250 case ECmSeamlessnessLevel: |
|
2251 { |
|
2252 if ( iMetaDataRecord ) |
|
2253 { |
|
2254 retVal = static_cast<CCDIAPMetadataRecord*>( |
|
2255 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ) |
|
2256 ->iSeamlessness; |
|
2257 } |
|
2258 else |
|
2259 { |
|
2260 User::Leave( KErrNotFound ); |
|
2261 } |
|
2262 } |
|
2263 break; |
|
2264 case ECmElementID: |
|
2265 { |
|
2266 if ( !iIapRecord ) |
|
2267 { |
|
2268 User::Leave( KErrNotReady ); |
|
2269 } |
|
2270 |
|
2271 retVal = ( KCDMaskShowField & ( static_cast<CCDIAPRecord*>( |
|
2272 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->ElementId() ) ); |
|
2273 } |
|
2274 break; |
|
2275 |
|
2276 case ECmLoadResult: |
|
2277 { |
|
2278 // This attribute has been deprecated since Symbian^4. |
|
2279 User::Leave( KErrNotSupported ); //TODO, update attribute definition comments. |
|
2280 } |
|
2281 break; |
|
2282 |
|
2283 case ECmNetworkId: |
|
2284 { |
|
2285 retVal = static_cast<CCDIAPRecord*>( |
|
2286 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->iNetwork; |
|
2287 } |
|
2288 break; |
|
2289 case ECmProxyPortNumber: |
|
2290 { |
|
2291 if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) |
|
2292 { |
|
2293 User::Leave( KErrNotFound ); |
|
2294 } |
|
2295 |
|
2296 retVal = static_cast<CCDProxiesRecord*>( |
|
2297 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iPortNumber; |
|
2298 } |
|
2299 break; |
|
2300 case ECmWapIPWSPOption: |
|
2301 { |
|
2302 retVal = static_cast<CCDWAPIPBearerRecord*>( |
|
2303 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPWSPOption; |
|
2304 } |
|
2305 break; |
|
2306 case ECmWapIPProxyPort: |
|
2307 { |
|
2308 retVal = static_cast<CCDWAPIPBearerRecord*>( |
|
2309 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPProxyPort; |
|
2310 } |
|
2311 break; |
|
2312 default: |
|
2313 { |
|
2314 retVal = GetBearerIntAttributeL( |
|
2315 aAttribute, |
|
2316 aClientPluginInstance->iGenRecordArray, |
|
2317 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2318 } |
|
2319 break; |
|
2320 } |
|
2321 |
|
2322 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETINTATTRIBUTEL_EXIT ); |
|
2323 return retVal; |
|
2324 } |
|
2325 |
|
2326 //----------------------------------------------------------------------------- |
|
2327 // CCmPluginBaseEng::GetBoolAttributeL |
|
2328 // ----------------------------------------------------------------------------- |
|
2329 EXPORT_C TBool CCmPluginBaseEng::GetBoolAttributeL( |
|
2330 TUint32 aAttribute, |
|
2331 CCmClientPluginInstance* aClientPluginInstance ) |
|
2332 { |
|
2333 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_ENTRY ); |
|
2334 |
|
2335 TBool retVal( EFalse ); |
|
2336 |
|
2337 switch ( aAttribute ) |
|
2338 { |
|
2339 case ECmProtected: |
|
2340 { |
|
2341 if ( iBearerType == KUidEmbeddedDestination ) |
|
2342 { |
|
2343 retVal = GetBearerBoolAttributeL( |
|
2344 aAttribute, |
|
2345 aClientPluginInstance->iGenRecordArray, |
|
2346 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2347 } |
|
2348 else |
|
2349 { |
|
2350 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2351 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
2352 retVal = iapRecord->Attributes() & ECDProtectedWrite; |
|
2353 } |
|
2354 } |
|
2355 break; |
|
2356 case ECmHidden: |
|
2357 { |
|
2358 if ( iBearerType == KUidEmbeddedDestination ) |
|
2359 { |
|
2360 retVal = GetBearerBoolAttributeL( |
|
2361 aAttribute, |
|
2362 aClientPluginInstance->iGenRecordArray, |
|
2363 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2364 } |
|
2365 else |
|
2366 { |
|
2367 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2368 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
2369 retVal = iapRecord->Attributes() & ECDHidden; |
|
2370 } |
|
2371 } |
|
2372 break; |
|
2373 case ECmProxyUsageEnabled: |
|
2374 { |
|
2375 if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) |
|
2376 { |
|
2377 retVal = EFalse; |
|
2378 } |
|
2379 else |
|
2380 { |
|
2381 retVal = static_cast<CCDProxiesRecord*>( |
|
2382 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) |
|
2383 ->iUseProxyServer; |
|
2384 } |
|
2385 } |
|
2386 break; |
|
2387 case ECmDestination: |
|
2388 { |
|
2389 TRAPD( err, retVal = GetBearerBoolAttributeL( |
|
2390 aAttribute, |
|
2391 aClientPluginInstance->iGenRecordArray, |
|
2392 aClientPluginInstance->iBearerSpecRecordArray ) ); |
|
2393 if ( err ) |
|
2394 { |
|
2395 retVal = EFalse; |
|
2396 } |
|
2397 } |
|
2398 break; |
|
2399 case ECmChargeCardUsageEnabled: |
|
2400 { |
|
2401 retVal = EFalse; |
|
2402 } |
|
2403 break; |
|
2404 case ECmLocationUsageEnabled: |
|
2405 { |
|
2406 retVal = iLocationEnabled; |
|
2407 } |
|
2408 break; |
|
2409 case ECmCoverage: |
|
2410 // By default the plugin has no network coverage. |
|
2411 { |
|
2412 TRAPD( err, retVal = GetBearerBoolAttributeL( |
|
2413 aAttribute, |
|
2414 aClientPluginInstance->iGenRecordArray, |
|
2415 aClientPluginInstance->iBearerSpecRecordArray ) ); |
|
2416 if ( err ) |
|
2417 { |
|
2418 if ( err == KErrNotFound ) |
|
2419 { |
|
2420 retVal = EFalse; |
|
2421 } |
|
2422 else |
|
2423 { |
|
2424 User::Leave( err ); |
|
2425 } |
|
2426 } |
|
2427 } |
|
2428 break; |
|
2429 case ECmMetaHighlight: |
|
2430 { |
|
2431 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2432 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2433 retVal = metadataRecord->iMetadata & EMetaHighlight; |
|
2434 } |
|
2435 break; |
|
2436 case ECmMetaHiddenAgent: |
|
2437 { |
|
2438 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2439 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2440 retVal = metadataRecord->iMetadata & EMetaHiddenAgent; |
|
2441 } |
|
2442 break; |
|
2443 case ECmMetaHotSpot: |
|
2444 { |
|
2445 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2446 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2447 retVal = metadataRecord->iMetadata & EMetaHotSpot; |
|
2448 } |
|
2449 break; |
|
2450 case ECmVirtual: |
|
2451 { |
|
2452 // This is bearer specific attribute. |
|
2453 TRAPD( err, retVal = GetBearerInfoBoolL( aAttribute ) ); |
|
2454 if ( err ) |
|
2455 { |
|
2456 retVal = EFalse; |
|
2457 } |
|
2458 } |
|
2459 break; |
|
2460 case ECmWapIPSecurity: |
|
2461 { |
|
2462 retVal = static_cast<CCDWAPIPBearerRecord*>( |
|
2463 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPSecurity; |
|
2464 } |
|
2465 break; |
|
2466 default: |
|
2467 { |
|
2468 retVal = GetBearerBoolAttributeL( |
|
2469 aAttribute, |
|
2470 aClientPluginInstance->iGenRecordArray, |
|
2471 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2472 } |
|
2473 } |
|
2474 |
|
2475 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETBOOLATTRIBUTEL_EXIT ); |
|
2476 return retVal; |
|
2477 } |
|
2478 |
|
2479 // ----------------------------------------------------------------------------- |
|
2480 // CCmPluginBaseEng::GetStringAttributeL() |
|
2481 // ----------------------------------------------------------------------------- |
|
2482 // |
|
2483 EXPORT_C HBufC* CCmPluginBaseEng::GetStringAttributeL( |
|
2484 TUint32 aAttribute, |
|
2485 CCmClientPluginInstance* aClientPluginInstance ) |
|
2486 { |
|
2487 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_ENTRY ); |
|
2488 |
|
2489 if ( !aClientPluginInstance ) |
|
2490 { |
|
2491 User::Leave( KErrCorrupt ); |
|
2492 } |
|
2493 |
|
2494 HBufC* retVal = NULL; |
|
2495 |
|
2496 switch ( aAttribute ) |
|
2497 { |
|
2498 case ECmBearerIcon: |
|
2499 { |
|
2500 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2501 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2502 |
|
2503 if ( !metadataRecord ) |
|
2504 { |
|
2505 User::Leave( KErrCorrupt ); |
|
2506 } |
|
2507 |
|
2508 retVal = TPtrC( metadataRecord->iIconFileName ).AllocL(); |
|
2509 } |
|
2510 break; |
|
2511 case ECmStartPage: |
|
2512 { |
|
2513 CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
2514 aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); |
|
2515 |
|
2516 if ( !wapAPRecord ) |
|
2517 { |
|
2518 User::Leave( KErrCorrupt ); |
|
2519 } |
|
2520 |
|
2521 retVal = TPtrC( wapAPRecord->iWAPStartPage ).AllocL(); |
|
2522 } |
|
2523 break; |
|
2524 case ECmName: |
|
2525 { |
|
2526 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2527 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
2528 |
|
2529 if ( !iapRecord ) |
|
2530 { |
|
2531 User::Leave( KErrCorrupt ); |
|
2532 } |
|
2533 |
|
2534 retVal = TPtrC( iapRecord->iRecordName ).AllocL(); |
|
2535 } |
|
2536 break; |
|
2537 case ECmProxyServerName: |
|
2538 { |
|
2539 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2540 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2541 |
|
2542 if ( !proxyRecord ) |
|
2543 { |
|
2544 User::Leave( KErrCorrupt ); |
|
2545 } |
|
2546 |
|
2547 retVal = TPtrC( proxyRecord->iServerName ).AllocL(); |
|
2548 } |
|
2549 break; |
|
2550 case ECmProxyProtocolName: |
|
2551 { |
|
2552 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2553 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2554 |
|
2555 if ( !proxyRecord ) |
|
2556 { |
|
2557 User::Leave( KErrCorrupt ); |
|
2558 } |
|
2559 |
|
2560 retVal = TPtrC( proxyRecord->iExceptions ).AllocL(); |
|
2561 } |
|
2562 break; |
|
2563 case ECmProxyExceptions: |
|
2564 { |
|
2565 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2566 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2567 |
|
2568 if ( !proxyRecord ) |
|
2569 { |
|
2570 User::Leave( KErrCorrupt ); |
|
2571 } |
|
2572 |
|
2573 retVal = TPtrC( proxyRecord->iProtocolName ).AllocL(); |
|
2574 } |
|
2575 break; |
|
2576 case ECmWapIPGatewayAddress: |
|
2577 { |
|
2578 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
2579 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
2580 |
|
2581 if ( !wapIPBearerRecord ) |
|
2582 { |
|
2583 User::Leave( KErrCorrupt ); |
|
2584 } |
|
2585 |
|
2586 retVal = TPtrC( wapIPBearerRecord->iWAPGatewayAddress ).AllocL(); |
|
2587 } |
|
2588 break; |
|
2589 case ECmWapIPProxyLoginName: |
|
2590 { |
|
2591 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
2592 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
2593 |
|
2594 if ( !wapIPBearerRecord ) |
|
2595 { |
|
2596 User::Leave( KErrCorrupt ); |
|
2597 } |
|
2598 |
|
2599 retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginName ).AllocL(); |
|
2600 } |
|
2601 break; |
|
2602 case ECmWapIPProxyLoginPass: |
|
2603 { |
|
2604 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
2605 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
2606 |
|
2607 if ( !wapIPBearerRecord ) |
|
2608 { |
|
2609 User::Leave( KErrCorrupt ); |
|
2610 } |
|
2611 |
|
2612 retVal = TPtrC( wapIPBearerRecord->iWAPProxyLoginPass ).AllocL(); |
|
2613 } |
|
2614 break; |
|
2615 default: |
|
2616 { |
|
2617 retVal = GetBearerStringAttributeL( |
|
2618 aAttribute, |
|
2619 aClientPluginInstance->iGenRecordArray, |
|
2620 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2621 } |
|
2622 break; |
|
2623 } |
|
2624 |
|
2625 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETSTRINGATTRIBUTEL_EXIT ); |
|
2626 return retVal; |
|
2627 } |
|
2628 |
|
2629 // ----------------------------------------------------------------------------- |
|
2630 // CCmPluginBaseEng::GetString8AttributeL() |
|
2631 // ----------------------------------------------------------------------------- |
|
2632 // |
|
2633 EXPORT_C HBufC8* CCmPluginBaseEng::GetString8AttributeL( |
|
2634 TUint32 aAttribute, |
|
2635 CCmClientPluginInstance* aClientPluginInstance ) |
|
2636 { |
|
2637 OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_ENTRY ); |
|
2638 |
|
2639 HBufC8* retVal = NULL; |
|
2640 |
|
2641 switch ( aAttribute ) |
|
2642 { |
|
2643 default: |
|
2644 { |
|
2645 retVal = GetBearerString8AttributeL( |
|
2646 aAttribute, |
|
2647 aClientPluginInstance->iGenRecordArray, |
|
2648 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2649 } |
|
2650 } |
|
2651 |
|
2652 OstTraceFunctionExit0( CCMPLUGINBASEENG_GETSTRING8ATTRIBUTEL_EXIT ); |
|
2653 return retVal; |
|
2654 } |
|
2655 |
|
2656 // ----------------------------------------------------------------------------- |
|
2657 // CCmPluginBaseEng::GetIntAttributeL |
|
2658 // ----------------------------------------------------------------------------- |
|
2659 EXPORT_C void CCmPluginBaseEng::SetIntAttributeL( |
|
2660 TUint32 aAttribute, |
|
2661 TUint32 aValue, |
|
2662 CCmClientPluginInstance* aClientPluginInstance ) |
|
2663 { |
|
2664 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_ENTRY ); |
|
2665 |
|
2666 switch ( aAttribute ) |
|
2667 { |
|
2668 case ECmNamingMethod: |
|
2669 { |
|
2670 aClientPluginInstance->iNamingMethod = ( TNamingMethod )aValue; |
|
2671 } |
|
2672 break; |
|
2673 |
|
2674 case ECmCommsDBBearerType: |
|
2675 case ECmElementID: |
|
2676 case ECmIapId: |
|
2677 case ECmId: |
|
2678 { |
|
2679 User::Leave( KErrNotSupported ); |
|
2680 } |
|
2681 break; |
|
2682 |
|
2683 case ECmSeamlessnessLevel: |
|
2684 { |
|
2685 if ( aValue == ESeamlessnessConfirmFirst || aValue == ESeamlessnessShowprogress ) |
|
2686 { |
|
2687 static_cast<CCDIAPMetadataRecord*>( |
|
2688 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )-> |
|
2689 iSeamlessness.SetL( aValue ); |
|
2690 } |
|
2691 else |
|
2692 { |
|
2693 User::Leave( KErrNotSupported ); |
|
2694 } |
|
2695 } |
|
2696 break; |
|
2697 |
|
2698 case ECmNetworkId: |
|
2699 { |
|
2700 User::Leave( KErrNotSupported ); |
|
2701 } |
|
2702 break; |
|
2703 case ECmProxyPortNumber: |
|
2704 { |
|
2705 if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) |
|
2706 { |
|
2707 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2708 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2709 CleanupStack::PushL( proxyRecord ); |
|
2710 CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); |
|
2711 proxyRecord->SetElementId( iProxyRecord->ElementId() ); |
|
2712 aClientPluginInstance->iGenRecordArray.InsertL( |
|
2713 static_cast<CommsDat::CCDRecordBase*>( proxyRecord ), |
|
2714 KProxyRecordIndex ); |
|
2715 CleanupStack::Pop( proxyRecord ); |
|
2716 } |
|
2717 |
|
2718 static_cast<CCDProxiesRecord*>( |
|
2719 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )-> |
|
2720 iPortNumber = aValue; |
|
2721 } |
|
2722 break; |
|
2723 case ECmWapIPWSPOption: |
|
2724 { |
|
2725 if ( aValue > KMaxTUint8 ) |
|
2726 { |
|
2727 User::Leave( KErrArgument ); |
|
2728 } |
|
2729 else |
|
2730 { |
|
2731 static_cast<CCDWAPIPBearerRecord*>( |
|
2732 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )-> |
|
2733 iWAPWSPOption.SetL( aValue ); |
|
2734 } |
|
2735 } |
|
2736 break; |
|
2737 case ECmWapIPProxyPort: |
|
2738 { |
|
2739 static_cast<CCDWAPIPBearerRecord*>( |
|
2740 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )-> |
|
2741 iWAPProxyPort.SetL( aValue ); |
|
2742 } |
|
2743 break; |
|
2744 default: |
|
2745 { |
|
2746 SetBearerIntAttributeL( |
|
2747 aAttribute, |
|
2748 aValue, |
|
2749 aClientPluginInstance->iGenRecordArray, |
|
2750 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2751 } |
|
2752 } |
|
2753 |
|
2754 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETINTATTRIBUTEL_EXIT ); |
|
2755 } |
|
2756 |
|
2757 // ----------------------------------------------------------------------------- |
|
2758 // CCmPluginBaseEng::SetBoolAttributeL |
|
2759 // ----------------------------------------------------------------------------- |
|
2760 EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL( |
|
2761 TUint32 aAttribute, |
|
2762 TBool aValue, |
|
2763 CCmClientPluginInstance* aClientPluginInstance ) |
|
2764 { |
|
2765 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_ENTRY ); |
|
2766 |
|
2767 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2768 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
2769 |
|
2770 switch ( aAttribute ) |
|
2771 { |
|
2772 case ECmProtected: |
|
2773 { |
|
2774 /** |
|
2775 * ECDProtectedWrite attribute is set in |
|
2776 * - iap record |
|
2777 * - network record |
|
2778 * - iapmetadata record |
|
2779 * - wap records |
|
2780 * - proxy record |
|
2781 * And depending the bearer |
|
2782 * - service record |
|
2783 * - bearer record |
|
2784 * - other bearer specific records |
|
2785 */ |
|
2786 SetAttribute( iapRecord, ECDProtectedWrite, aValue ); |
|
2787 } |
|
2788 break; |
|
2789 case ECmHidden: |
|
2790 { |
|
2791 /** |
|
2792 * ECDHidden attribute is set in |
|
2793 * - iap record |
|
2794 * - network record |
|
2795 * - iapmetadata record |
|
2796 * - wap records |
|
2797 * - proxy record |
|
2798 * And depending the bearer |
|
2799 * - service record |
|
2800 * - bearer record |
|
2801 * - other bearer specific records |
|
2802 */ |
|
2803 SetAttribute( iapRecord, ECDHidden, aValue ); |
|
2804 } |
|
2805 break; |
|
2806 case ECmProxyUsageEnabled: |
|
2807 { |
|
2808 if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) |
|
2809 { |
|
2810 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2811 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2812 CleanupStack::PushL( proxyRecord ); |
|
2813 CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); |
|
2814 proxyRecord->SetElementId( iProxyRecord->ElementId() ); |
|
2815 aClientPluginInstance->iGenRecordArray.InsertL( |
|
2816 static_cast<CommsDat::CCDRecordBase*>( proxyRecord ), |
|
2817 KProxyRecordIndex ); |
|
2818 CleanupStack::Pop( proxyRecord ); |
|
2819 } |
|
2820 |
|
2821 static_cast<CCDProxiesRecord*>( |
|
2822 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer = |
|
2823 aValue; |
|
2824 } |
|
2825 break; |
|
2826 case ECmChargeCardUsageEnabled: |
|
2827 { |
|
2828 User::Leave( KErrNotSupported ); |
|
2829 } |
|
2830 break; |
|
2831 case ECmLocationUsageEnabled: |
|
2832 { |
|
2833 EnableLocationL( aValue ); |
|
2834 } |
|
2835 break; |
|
2836 case ECmMetaHighlight: |
|
2837 { |
|
2838 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2839 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2840 if ( aValue ) |
|
2841 { |
|
2842 metadataRecord->iMetadata = EMetaHighlight | metadataRecord->iMetadata; |
|
2843 } |
|
2844 else |
|
2845 { |
|
2846 metadataRecord->iMetadata = ~EMetaHighlight & metadataRecord->iMetadata; |
|
2847 } |
|
2848 } |
|
2849 break; |
|
2850 case ECmMetaHiddenAgent: |
|
2851 { |
|
2852 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2853 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2854 if ( aValue ) |
|
2855 { |
|
2856 metadataRecord->iMetadata = EMetaHiddenAgent | metadataRecord->iMetadata; |
|
2857 } |
|
2858 else |
|
2859 { |
|
2860 metadataRecord->iMetadata = ~EMetaHiddenAgent & metadataRecord->iMetadata; |
|
2861 } |
|
2862 } |
|
2863 break; |
|
2864 case ECmMetaHotSpot: |
|
2865 { |
|
2866 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2867 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2868 if ( aValue ) |
|
2869 { |
|
2870 metadataRecord->iMetadata = EMetaHotSpot | metadataRecord->iMetadata; |
|
2871 } |
|
2872 else |
|
2873 { |
|
2874 metadataRecord->iMetadata = ~EMetaHotSpot & metadataRecord->iMetadata; |
|
2875 } |
|
2876 } |
|
2877 break; |
|
2878 case ECmWapIPSecurity: |
|
2879 { |
|
2880 static_cast<CCDWAPIPBearerRecord*>( |
|
2881 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) |
|
2882 ->iWAPSecurity.SetL( aValue ); |
|
2883 } |
|
2884 break; |
|
2885 default: |
|
2886 { |
|
2887 SetBearerBoolAttributeL( |
|
2888 aAttribute, |
|
2889 aValue, |
|
2890 aClientPluginInstance->iGenRecordArray, |
|
2891 aClientPluginInstance->iBearerSpecRecordArray ); |
|
2892 } |
|
2893 } |
|
2894 |
|
2895 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETBOOLATTRIBUTEL_EXIT ); |
|
2896 } |
|
2897 |
|
2898 // ----------------------------------------------------------------------------- |
|
2899 // CCmPluginBaseEng::SetStringAttributeL |
|
2900 // ----------------------------------------------------------------------------- |
|
2901 EXPORT_C void CCmPluginBaseEng::SetStringAttributeL( |
|
2902 TUint32 aAttribute, |
|
2903 const TDesC16& aValue, |
|
2904 CCmClientPluginInstance* aClientPluginInstance ) |
|
2905 { |
|
2906 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_ENTRY ); |
|
2907 |
|
2908 switch ( aAttribute ) |
|
2909 { |
|
2910 case ECmBearerIcon: |
|
2911 { |
|
2912 CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>( |
|
2913 aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); |
|
2914 |
|
2915 if ( !metadataRecord ) |
|
2916 { |
|
2917 User::Leave( KErrCorrupt ); |
|
2918 } |
|
2919 metadataRecord->iIconFileName.SetL( aValue ); |
|
2920 } |
|
2921 break; |
|
2922 case ECmStartPage: |
|
2923 { |
|
2924 CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>( |
|
2925 aClientPluginInstance->iGenRecordArray[KWAPAPRecordIndex] ); |
|
2926 |
|
2927 if ( !wapAPRecord ) |
|
2928 { |
|
2929 User::Leave( KErrCorrupt ); |
|
2930 } |
|
2931 wapAPRecord->iWAPStartPage.SetL( aValue ); |
|
2932 } |
|
2933 break; |
|
2934 case ECmName: |
|
2935 { |
|
2936 CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>( |
|
2937 aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); |
|
2938 |
|
2939 if ( !iapRecord ) |
|
2940 { |
|
2941 User::Leave( KErrCorrupt ); |
|
2942 } |
|
2943 SetNameL( aValue, iapRecord, aClientPluginInstance->iNamingMethod ); |
|
2944 } |
|
2945 break; |
|
2946 case ECmProxyServerName: |
|
2947 { |
|
2948 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2949 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2950 if ( !proxyRecord ) |
|
2951 { |
|
2952 proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2953 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2954 |
|
2955 // Map proxy record to this iap. |
|
2956 proxyRecord->iService = static_cast<CCDProxiesRecord*>( |
|
2957 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); |
|
2958 |
|
2959 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); |
|
2960 } |
|
2961 |
|
2962 SetProxyServerNameL( aValue, proxyRecord ); |
|
2963 } |
|
2964 break; |
|
2965 case ECmProxyProtocolName: |
|
2966 { |
|
2967 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2968 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2969 if ( !proxyRecord ) |
|
2970 { |
|
2971 proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2972 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2973 |
|
2974 // Map proxy record to this iap. |
|
2975 proxyRecord->iService = static_cast<CCDProxiesRecord*>( |
|
2976 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); |
|
2977 |
|
2978 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); |
|
2979 } |
|
2980 |
|
2981 proxyRecord->iProtocolName.SetL( aValue ); |
|
2982 } |
|
2983 break; |
|
2984 case ECmProxyExceptions: |
|
2985 { |
|
2986 CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2987 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ); |
|
2988 if ( !proxyRecord ) |
|
2989 { |
|
2990 proxyRecord = static_cast<CCDProxiesRecord*>( |
|
2991 CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); |
|
2992 |
|
2993 // Map proxy record to this iap. |
|
2994 proxyRecord->iService = static_cast<CCDProxiesRecord*>( |
|
2995 aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->RecordId(); |
|
2996 |
|
2997 aClientPluginInstance->iGenRecordArray.Insert( proxyRecord, KProxyRecordIndex ); |
|
2998 } |
|
2999 |
|
3000 proxyRecord->iExceptions.SetL( aValue ); |
|
3001 } |
|
3002 break; |
|
3003 case ECmWapIPGatewayAddress: |
|
3004 { |
|
3005 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
3006 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
3007 |
|
3008 if ( !wapIPBearerRecord ) |
|
3009 { |
|
3010 User::Leave( KErrCorrupt ); |
|
3011 } |
|
3012 wapIPBearerRecord->iWAPGatewayAddress.SetL( aValue ); |
|
3013 } |
|
3014 break; |
|
3015 case ECmWapIPProxyLoginName: |
|
3016 { |
|
3017 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
3018 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
3019 |
|
3020 if ( !wapIPBearerRecord ) |
|
3021 { |
|
3022 User::Leave( KErrCorrupt ); |
|
3023 } |
|
3024 wapIPBearerRecord->iWAPProxyLoginName.SetL( aValue ); |
|
3025 } |
|
3026 break; |
|
3027 case ECmWapIPProxyLoginPass: |
|
3028 { |
|
3029 CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>( |
|
3030 aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ); |
|
3031 |
|
3032 if ( !wapIPBearerRecord ) |
|
3033 { |
|
3034 User::Leave( KErrCorrupt ); |
|
3035 } |
|
3036 wapIPBearerRecord->iWAPProxyLoginPass.SetL( aValue ); |
|
3037 } |
|
3038 break; |
|
3039 default: |
|
3040 { |
|
3041 SetBearerStringAttributeL( |
|
3042 aAttribute, |
|
3043 aValue, |
|
3044 aClientPluginInstance->iGenRecordArray, |
|
3045 aClientPluginInstance->iBearerSpecRecordArray ); |
|
3046 } |
|
3047 } |
|
3048 |
|
3049 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRINGATTRIBUTEL_EXIT ); |
|
3050 } |
|
3051 |
|
3052 // ----------------------------------------------------------------------------- |
|
3053 // CCmPluginBaseEng::SetString8AttributeL |
|
3054 // ----------------------------------------------------------------------------- |
|
3055 EXPORT_C void CCmPluginBaseEng::SetString8AttributeL( |
|
3056 TUint32 aAttribute, |
|
3057 const TDesC8& aValue, |
|
3058 CCmClientPluginInstance* aClientPluginInstance ) |
|
3059 { |
|
3060 OstTraceFunctionEntry0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_ENTRY ); |
|
3061 |
|
3062 switch ( aAttribute ) |
|
3063 { |
|
3064 default: |
|
3065 { |
|
3066 SetBearerString8AttributeL( |
|
3067 aAttribute, |
|
3068 aValue, |
|
3069 aClientPluginInstance->iGenRecordArray, |
|
3070 aClientPluginInstance->iBearerSpecRecordArray ); |
|
3071 } |
|
3072 } |
|
3073 |
|
3074 OstTraceFunctionExit0( CCMPLUGINBASEENG_SETSTRING8ATTRIBUTEL_EXIT ); |
|
3075 } |
|
3076 |
|
3077 // --------------------------------------------------------------------------- |
|
3078 // CCmPluginBaseEng::IsUnspecifiedIPv4Address |
|
3079 // --------------------------------------------------------------------------- |
|
3080 // |
|
3081 TBool CCmPluginBaseEng::IsUnspecifiedIPv4Address( const TDesC& aIpv4Address ) |
|
3082 { |
|
3083 OstTraceFunctionEntry0( _ISUNSPECIFIEDIPV4ADDRESS_ENTRY ); |
|
3084 |
|
3085 if ( aIpv4Address.Length() == 0 || !aIpv4Address.CompareF( KUnspecifiedIPv4 ) ) |
|
3086 { |
|
3087 OstTraceFunctionExit0( _ISUNSPECIFIEDIPV4ADDRESS_EXIT ); |
|
3088 return ETrue; |
|
3089 } |
|
3090 |
|
3091 OstTraceFunctionExit0( DUP1__ISUNSPECIFIEDIPV4ADDRESS_EXIT ); |
|
3092 return EFalse; |
|
3093 } |
|
3094 |
|
3095 // --------------------------------------------------------------------------- |
|
3096 // CCmPluginBaseEng::ClassifyIPv6Address |
|
3097 // --------------------------------------------------------------------------- |
|
3098 // |
|
3099 TIPv6Types CCmPluginBaseEng::ClassifyIPv6Address( const TDesC& aIpv6Address ) |
|
3100 { |
|
3101 OstTraceFunctionEntry0( _CLASSIFYIPV6ADDRESS_ENTRY ); |
|
3102 |
|
3103 if ( aIpv6Address.Length() == 0 || !aIpv6Address.CompareF( KDynamicIpv6Address ) ) |
|
3104 { |
|
3105 OstTraceFunctionExit0( _CLASSIFYIPV6ADDRESS_EXIT ); |
|
3106 |
|
3107 return EIPv6Unspecified; |
|
3108 } |
|
3109 else if ( !aIpv6Address.CompareF( KKnownIp6NameServer1 ) || |
|
3110 !aIpv6Address.CompareF( KKnownIp6NameServer2 ) ) |
|
3111 { |
|
3112 OstTraceFunctionExit0( DUP1__CLASSIFYIPV6ADDRESS_EXIT ); |
|
3113 |
|
3114 return EIPv6WellKnown; |
|
3115 } |
|
3116 |
|
3117 OstTraceFunctionExit0( DUP2__CLASSIFYIPV6ADDRESS_EXIT ); |
|
3118 return EIPv6UserDefined; |
|
3119 } |
|
3120 |
|
3121 // End of file |
|