--- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu Jun 24 11:36:05 2010 +0300
+++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Fri Jul 09 10:25:55 2010 +0300
@@ -427,15 +427,19 @@
// CCmPluginBaseEng::GetGenericTableIdsToBeObserved
// ---------------------------------------------------------------------------
//
-EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObserved(
+EXPORT_C void CCmPluginBaseEng::GetGenericTableIdsToBeObservedL(
RArray<TUint32>& aTableIdArray ) const
{
+ OstTraceFunctionEntry0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_ENTRY );
+
// Service and bearer records should be added by plugins.
-
- aTableIdArray.Append( KCDTIdIAPRecord );
- aTableIdArray.Append( KCDTIdWAPAccessPointRecord );
- aTableIdArray.Append( KCDTIdProxiesRecord );
- aTableIdArray.Append( iMetadataTableId );
+ aTableIdArray.AppendL( KCDTIdIAPRecord );
+ aTableIdArray.AppendL( KCDTIdWAPAccessPointRecord );
+ aTableIdArray.AppendL( KCDTIdWAPIPBearerRecord );
+ aTableIdArray.AppendL( KCDTIdProxiesRecord );
+ aTableIdArray.AppendL( iMetadataTableId );
+
+ OstTraceFunctionExit0( CCMPLUGINBASEENG_GETGENERICTABLEIDSTOBEOBSERVED_EXIT );
}
// ---------------------------------------------------------------------------
@@ -495,12 +499,9 @@
{
case KIapRecordIndex:
{
- CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+ aCopyInstance->iIapRecord = static_cast<CCDIAPRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
- CleanupStack::PushL( iapRecord );
- CopyRecordFieldsL( *iIapRecord, *iapRecord );
- CleanupStack::Pop( iapRecord );
- aCopyInstance->iIapRecord = iapRecord;
+ CopyRecordFieldsL( *iIapRecord, *aCopyInstance->iIapRecord );
}
break;
case KServiceRecordIndex:
@@ -512,46 +513,39 @@
break;
case KNetworkRecordIndex:
{
- CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
+ aCopyInstance->iNetworkRecord = static_cast<CCDNetworkRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
- CleanupStack::PushL( networkRecord );
- CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
- CleanupStack::Pop( networkRecord );
- aCopyInstance->iNetworkRecord = networkRecord;
+ CopyRecordFieldsL( *iNetworkRecord, *aCopyInstance->iNetworkRecord );
}
break;
case KWAPAPRecordIndex:
{
aCopyInstance->iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
+ CopyRecordFieldsL( *iWapAPRecord, *aCopyInstance->iWapAPRecord );
}
break;
case KWAPBearerRecordIndex:
{
aCopyInstance->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+ CopyRecordFieldsL( *iWapIPBearerRecord, *aCopyInstance->iWapIPBearerRecord );
}
break;
case KMetaDataRecordIndex:
{
- CCDIAPMetadataRecord* metadataRecord =
- new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
- CleanupStack::PushL( metadataRecord );
- CopyRecordFieldsL( *iMetaDataRecord, *metadataRecord );
- CleanupStack::Pop( metadataRecord );
- aCopyInstance->iMetaDataRecord = metadataRecord;
+ aCopyInstance->iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord(
+ iMetadataTableId );
+ CopyRecordFieldsL( *iMetaDataRecord, *aCopyInstance->iMetaDataRecord );
}
break;
case KProxyRecordIndex:
{
if ( iProxyRecord )
{
- CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+ aCopyInstance->iProxyRecord = static_cast<CCDProxiesRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
- CleanupStack::PushL( proxyRecord );
- CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
- CleanupStack::Pop( proxyRecord );
- aCopyInstance->iProxyRecord = proxyRecord;
+ CopyRecordFieldsL( *iProxyRecord, *aCopyInstance->iProxyRecord );
}
}
break;
@@ -591,57 +585,49 @@
ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId );
ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId );
- // Make sure we see only basic type info. Masks out any additional info
- // on links (CommsDat internal stuff).
- switch ( recordInfo->iValType & 0x000000ff )
+ if ( !( ptrSource->IsNull() ) )
{
- case CommsDat::EInt:
- case CommsDat::EBool:
+ // Make sure we see only basic type info. Masks out any additional info
+ // on links (CommsDat internal stuff).
+ switch ( recordInfo->iValType & 0x000000ff )
{
- if ( !( ptrSource->IsNull() ) )
+ case CommsDat::EInt:
+ case CommsDat::EBool:
{
static_cast<CMDBField<TInt>&>( *ptrDest ).SetL(
static_cast<CMDBField<TInt>&>( *ptrSource ) );
}
- }
- break;
- case CommsDat::EUint32:
- case CommsDat::ELink:
- {
- if ( !( ptrSource->IsNull() ) )
+ break;
+ case CommsDat::EUint32:
+ case CommsDat::ELink:
{
static_cast<CMDBField<TUint32>&>( *ptrDest ).SetL(
static_cast<CMDBField<TUint32>&>( *ptrSource ) );
}
- }
- break;
- case CommsDat::EDesC8:
- {
- if ( !( ptrSource->IsNull() ) )
+ break;
+ case CommsDat::EDesC8:
{
static_cast<CMDBField<TDesC8>&>( *ptrDest ).SetL(
static_cast<CMDBField<TDesC8>&>( *ptrSource ) );
}
- }
- break;
- case CommsDat::EText:
- case CommsDat::EMedText:
- case CommsDat::ELongText:
- {
- if ( !( ptrSource->IsNull() ) )
+ break;
+ case CommsDat::EText:
+ case CommsDat::EMedText:
+ case CommsDat::ELongText:
{
static_cast<CMDBField<TDesC>&>( *ptrDest ).SetL(
static_cast<CMDBField<TDesC>&>( *ptrSource ) );
}
+ break;
+ default:
+ {
+ User::Leave( KErrCorrupt );
+ }
+ break;
}
- break;
- default:
- {
- User::Leave( KErrCorrupt );
- }
- break;
+ ptrDest->ClearAttributes( ptrDest->Attributes() );
+ ptrDest->SetAttributes( ptrSource->Attributes() );
}
- ptrDest->SetAttributes( ptrSource->Attributes() );
recordInfo++;
}
@@ -663,13 +649,8 @@
LoadMetadataRecordL();
LoadNetworkRecordL();
- // This is a connectionmethodinfo instance, that has no
- // service and proxy setting.
- if ( KDummyBearerType != iBearerType )
- {
- LoadServiceRecordL();
- LoadProxyRecordL();
- }
+ LoadServiceRecordL();
+ LoadProxyRecordL();
LoadBearerRecordsL();
@@ -895,6 +876,9 @@
CheckIfNameModifiedL( iapRecord, iIapRecord );
iIapRecord->StoreL( iSession );
+ // Have to be "reloaded" to get possible default values
+ // from template records.
+ iIapRecord->LoadL( iSession );
iCmId = iIapRecord->RecordId();
aClientPluginInstance->iIapId = iCmId;
@@ -974,7 +958,9 @@
iProxyRecord->SetRecordId( KCDNewRecordRequest );
iProxyRecord->StoreL( iSession );
- CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
+ // Have to be "reloaded" to get possible default values from template records.
+ iProxyRecord->LoadL( iSession );
+
proxyRecord->SetElementId( iProxyRecord->ElementId() );
}
else
@@ -982,6 +968,7 @@
{
iProxyRecord->ModifyL( iSession );
}
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
}
@@ -1009,7 +996,9 @@
delete iMetaDataRecord;
iMetaDataRecord = NULL;
iMetaDataRecord = new( ELeave ) CCDIAPMetadataRecord( iMetadataTableId );
+
CopyRecordFieldsL( *clientMetadataRecord, *iMetaDataRecord );
+
iMetaDataRecord->SetElementId( clientMetadataRecord->ElementId() );
if ( !iMetaDataRecord->RecordId() )
@@ -1017,12 +1006,16 @@
iMetaDataRecord->iIAP = IAPRecordElementId();
iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
iMetaDataRecord->StoreL( iSession );
+ // Have to be "reloaded" to get possible default values from template records.
+ iMetaDataRecord->LoadL( iSession );
+
clientMetadataRecord->SetElementId( iMetaDataRecord->ElementId() );
}
else
{
iMetaDataRecord->ModifyL( iSession );
}
+ CopyRecordFieldsL( *iMetaDataRecord, *clientMetadataRecord );
OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEMETADATARECORDL_EXIT );
}
@@ -1083,12 +1076,16 @@
{
iNetworkRecord->SetRecordId( KCDNewRecordRequest );
iNetworkRecord->StoreL( iSession );
+ // Have to be "reloaded" to get possible default values from template records.
+ iNetworkRecord->LoadL( iSession );
+
networkRecord->SetElementId( iNetworkRecord->ElementId() );
}
else
{
iNetworkRecord->ModifyL( iSession );
}
+ CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATENETWORKRECORDL_EXIT );
}
@@ -1238,24 +1235,32 @@
CheckIfNameModifiedL( iapRecord, wapAPRecord );
CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
+ // WAP AP record
iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );//TODO, convert to generic copy
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
+ CopyRecordFieldsL( *wapAPRecord, *iWapAPRecord );
iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
- iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );//TODO, convert to generic copy
+ // WAP IP Bearer record
+ iWapIPBearerRecord =static_cast<CCDWAPIPBearerRecord*>(
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+ CopyRecordFieldsL( *wapIPBearerRecord, *iWapIPBearerRecord );
iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
if ( !iWapAPRecord->RecordId() )
{
iWapAPRecord->SetRecordId( KCDNewRecordRequest );
iWapAPRecord->StoreL(iSession );
+ // Have to be "reloaded" to get possible default values from template records.
+ iWapAPRecord->LoadL(iSession );
+
wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
}
else
{
iWapAPRecord->ModifyL( iSession );
}
+ CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord );
if ( !iWapIPBearerRecord->RecordId() )
{
@@ -1264,15 +1269,16 @@
iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
iWapIPBearerRecord->StoreL( iSession );
+ // Have to be "reloaded" to get possible default values from template records.
+ iWapIPBearerRecord->LoadL( iSession );
+
wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
-
- wapIPBearerRecord->iWAPAccessPointId = iWapAPRecord->RecordId();
- wapIPBearerRecord->iWAPIAP = iapRecord->RecordId();
}
else
{
iWapIPBearerRecord->ModifyL( iSession );
}
+ CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord );
OstTraceFunctionExit0( DUP1_CCMPLUGINBASEENG_UPDATEWAPRECORDL_EXIT );
}
@@ -2107,9 +2113,10 @@
if ( iWapAPRecord )
{
CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPAccessPointRecord ) );
+ CleanupStack::PushL( wapAPRecord );
+ CopyRecordFieldsL( *iWapAPRecord, *wapAPRecord );
wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
- CleanupStack::PushL( wapAPRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
static_cast<CommsDat::CCDRecordBase*>( wapAPRecord ) );
CleanupStack::Pop( wapAPRecord );
@@ -2122,9 +2129,10 @@
if ( iWapIPBearerRecord )
{
CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
+ CCDRecordBase::RecordFactoryL( KCDTIdWAPIPBearerRecord ) );
+ CleanupStack::PushL( wapIPBearerRecord );
+ CopyRecordFieldsL( *iWapIPBearerRecord, *wapIPBearerRecord );
wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
- CleanupStack::PushL( wapIPBearerRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
static_cast<CommsDat::CCDRecordBase*>( wapIPBearerRecord ) );
CleanupStack::Pop( wapIPBearerRecord );
@@ -2339,7 +2347,9 @@
}
else
{
- retVal = IsProtected();
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+ aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+ retVal = iapRecord->Attributes() & ECDProtectedWrite;
}
}
break;