diff -r 05bc53fe583b -r 83ca720e2b9a cmmanager/cmmgr/cmmserver/src/cmmbearerprioritycache.cpp --- a/cmmanager/cmmgr/cmmserver/src/cmmbearerprioritycache.cpp Tue Aug 31 15:35:44 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -/* -* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Implementation of the bearer priority array cache. -* -*/ - - -#include -#include - -#include "cmmbearerprioritycache.h" -#include "cmmbearerpriority.h" -#include "cmmtransactionhandler.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cmmbearerprioritycacheTraces.h" -#endif - - -// --------------------------------------------------------------------------- -// Two phased construction. -// --------------------------------------------------------------------------- -// -CCmmBearerPriorityCache* CCmmBearerPriorityCache::NewL( - CCmmTransactionHandler* aTrans, - CommsDat::TMDBElementId aBearerPriorityTableId ) - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_NEWL_ENTRY ); - - CCmmBearerPriorityCache* self = - CCmmBearerPriorityCache::NewLC( aTrans, aBearerPriorityTableId ); - CleanupStack::Pop( self ); - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_NEWL_EXIT ); - return self; - } - -// --------------------------------------------------------------------------- -// Two phased construction. -// --------------------------------------------------------------------------- -// -CCmmBearerPriorityCache* CCmmBearerPriorityCache::NewLC( - CCmmTransactionHandler* aTrans, - CommsDat::TMDBElementId aBearerPriorityTableId ) - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_NEWLC_ENTRY ); - - CCmmBearerPriorityCache* self = - new( ELeave ) CCmmBearerPriorityCache( aTrans, aBearerPriorityTableId ); - CleanupStack::PushL( self ); - self->ConstructL(); - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_NEWLC_EXIT ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CCmmBearerPriorityCache::~CCmmBearerPriorityCache() - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_ENTRY ); - iArray.ResetAndDestroy(); - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_EXIT ); - } - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CCmmBearerPriorityCache::CCmmBearerPriorityCache( - CCmmTransactionHandler* aTrans, - CommsDat::TMDBElementId aBearerPriorityTableId ) - : - iTrans( aTrans ), - iArray(), - iBearerPriorityTableId( aBearerPriorityTableId ) - { - OstTraceFunctionEntry0( DUP1_CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_ENTRY ); - OstTraceFunctionExit0( DUP1_CCMMBEARERPRIORITYCACHE_CCMMBEARERPRIORITYCACHE_EXIT ); - } - -// --------------------------------------------------------------------------- -// Second phase constructor. -// --------------------------------------------------------------------------- -// -void CCmmBearerPriorityCache::ConstructL() - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_CONSTRUCTL_ENTRY ); - - // Read initial bearer priority array from commsdat. - ReadL(); - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_CONSTRUCTL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Updates the bearer priority array with the contents of aArray. -// --------------------------------------------------------------------------- -// -void CCmmBearerPriorityCache::UpdateL( const RPointerArray& aArray ) - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_UPDATEL_ENTRY ); - - iTrans->OpenTransactionLC(); - - CommsDat::CMDBRecordSet* bpRS = - new( ELeave ) CommsDat::CMDBRecordSet( - iBearerPriorityTableId ); - CleanupStack::PushL( bpRS ); - - // Delete the old records. - TRAP_IGNORE( bpRS->LoadL( iTrans->Session() ) ); - for ( TInt i = 0; i < bpRS->iRecords.Count(); i++ ) - { - bpRS->iRecords[i]->DeleteL( iTrans->Session() ); - } - CleanupStack::PopAndDestroy( bpRS ); - bpRS = NULL; - - iArray.ResetAndDestroy(); - - // Add new content. - const TInt count( aArray.Count() ); - for ( TInt i = 0; i < count; i++ ) - { - if ( aArray[i]->ServiceType() && aArray[i]->ServiceType()->Length() > 0 ) - { - CCDGlobalBearerTypePriorizationRecord* bpRcd = - new( ELeave ) CCDGlobalBearerTypePriorizationRecord( - iBearerPriorityTableId ); - CleanupStack::PushL( bpRcd ); - - HBufC* serviceType = aArray[i]->ServiceType()->AllocLC(); - TUint priority = aArray[i]->Priority(); - TUint uiPriority = aArray[i]->UiPriority(); - - bpRcd->SetRecordId( KCDNewRecordRequest ); - bpRcd->iServiceType.SetL( *serviceType ); - bpRcd->iPriority.SetL( priority ); - bpRcd->iUIPriority.SetL( uiPriority ); - bpRcd->StoreL( iTrans->Session() ); - - TPtrC tempServiceType( serviceType->Des() ); - CCmmBearerPriority* item = CCmmBearerPriority::NewLC( - tempServiceType, - priority, - uiPriority ); - iArray.AppendL( item ); // Ownership transferred. - CleanupStack::Pop( item ); - CleanupStack::PopAndDestroy( serviceType ); - CleanupStack::PopAndDestroy( bpRcd ); - } - } - iTrans->CommitTransactionL(); - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_UPDATEL_EXIT ); - } - -// --------------------------------------------------------------------------- -// CopyL() -// --------------------------------------------------------------------------- -// -void CCmmBearerPriorityCache::CopyL( RPointerArray& aArray ) const - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_COPYL_ENTRY ); - - const TInt count( iArray.Count() ); - for ( TInt i = 0; i < count; i++ ) - { - if ( iArray[i]->ServiceType() ) - { - TPtrC tempServiceType( iArray[i]->ServiceType()->Des() ); - if ( tempServiceType.Length() > 0 ) - { - CCmmBearerPriority* item = CCmmBearerPriority::NewLC( - tempServiceType, - iArray[i]->Priority(), - iArray[i]->UiPriority() ); - aArray.AppendL( item ); - CleanupStack::Pop( item ); - } - } - } - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_COPYL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Get the priority value for a service type name from the bearer priority -// cache. -// --------------------------------------------------------------------------- -// -TUint CCmmBearerPriorityCache::GetPriority( const TDesC& aServiceType ) const - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_GETPRIORITY_ENTRY ); - - TUint priority = CMManager::KDataMobilitySelectionPolicyPriorityWildCard; - - if ( aServiceType.Length() > 0 ) - { - for ( TInt i = 0; i < iArray.Count(); i++ ) - { - if ( iArray[i]->ServiceType()->Compare( aServiceType ) == 0 ) - { - priority = iArray[i]->Priority(); - break; - } - } - } - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_GETPRIORITY_EXIT ); - return priority; - } - -// --------------------------------------------------------------------------- -// Reads the bearer priority array from CommsDat. -// --------------------------------------------------------------------------- -// -void CCmmBearerPriorityCache::ReadL() - { - OstTraceFunctionEntry0( CCMMBEARERPRIORITYCACHE_READL_ENTRY ); - - CommsDat::CMDBRecordSet* bpRS = - new( ELeave ) CommsDat::CMDBRecordSet( - iBearerPriorityTableId ); - CleanupStack::PushL( bpRS ); - - CCDGlobalBearerTypePriorizationRecord* bpRcd = - new( ELeave ) CCDGlobalBearerTypePriorizationRecord( - iBearerPriorityTableId ); - CleanupStack::PushL( bpRcd ); - - TRAP_IGNORE( bpRS->LoadL( iTrans->Session() ) ); - - // Read every record and store to cache. - const TInt bpCount = bpRS->iRecords.Count(); - for ( TInt i = 0; i < bpCount; i++ ) - { - bpRcd->SetElementId( bpRS->iRecords[i]->ElementId() ); - bpRcd->LoadL( iTrans->Session() ); - - if ( !bpRcd->iServiceType.IsNull() ) - { - TPtrC serviceType( bpRcd->iServiceType ); - TUint priority = bpRcd->iPriority; - TUint uiPriority = bpRcd->iUIPriority; - - if ( serviceType.Length() > 0 ) - { - CCmmBearerPriority* item = CCmmBearerPriority::NewLC( - serviceType, - priority, - uiPriority ); - iArray.AppendL( item ); - CleanupStack::Pop( item ); - } - } - } - CleanupStack::PopAndDestroy( bpRcd ); - CleanupStack::PopAndDestroy( bpRS ); - - OstTraceFunctionExit0( CCMMBEARERPRIORITYCACHE_READL_EXIT ); - } - -// End of file