cmmanager/cmmgr/cmmserver/src/cmmsession.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
--- a/cmmanager/cmmgr/cmmserver/src/cmmsession.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3564 +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:
-* Handles client requests.
-*
-*/
-
-#include <sysutil.h>
-#include <cmconnectionmethoddef.h>
-#include <cmpluginembdestinationdef.h>
-#include <cmdefconnvalues.h>
-
-#include "cmmserver.h"
-#include "cmmserverdefs.h"
-#include "cmmsession.h"
-#include "cmmdestinationinstance.h"
-#include "cmmconnmethodinstance.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cmmsessionTraces.h"
-#endif
-
-
-CCmmSession* CCmmSession::NewL( CCmmServer& aServer, CCmmCache& aCache )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_NEWL_ENTRY );
-
-    CCmmSession* self = CCmmSession::NewLC( aServer, aCache );
-    CleanupStack::Pop( self );
-
-    OstTraceFunctionExit0( CCMMSESSION_NEWL_EXIT );
-    return self;
-    }
-
-CCmmSession* CCmmSession::NewLC( CCmmServer& aServer, CCmmCache& aCache )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_NEWLC_ENTRY );
-
-    CCmmSession* self = new( ELeave ) CCmmSession( aServer, aCache );
-    CleanupStack::PushL( self ) ;
-    self->ConstructL() ;
-
-    OstTraceFunctionExit0( CCMMSESSION_NEWLC_EXIT );
-    return self ;
-    }
-
-// -----------------------------------------------------------------------------
-// Constructor.
-// -----------------------------------------------------------------------------
-//
-CCmmSession::CCmmSession( CCmmServer& aServer, CCmmCache& aCache )
-        :
-        iServer( aServer ),
-        iCache( aCache ),
-        iFsConnected( EFalse )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CCMMSESSION_ENTRY );
-
-    iDestinationContainer = NULL;
-    iDestinationObjects = NULL;
-    iConnMethodContainer = NULL;
-    iConnMethodObjects = NULL;
-
-    OstTraceFunctionExit0( CCMMSESSION_CCMMSESSION_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// The second phase of two phase construction.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ConstructL()
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CONSTRUCTL_ENTRY );
-
-    iServer.IncrementSessions();
-
-    // Create a new object index (it stores the destination objects owned by
-    // this session).
-    iDestinationObjects = CObjectIx::NewL();
-
-    // Initialize the object container using the object container index in the
-    // server (Object container provides unique ids for the objects owned by
-    // this session).
-    iDestinationContainer = iServer.NewContainerL();
-
-    // The same for connection method subsessions.
-    iConnMethodObjects = CObjectIx::NewL();
-    iConnMethodContainer = iServer.NewContainerL();
-
-    OstTraceFunctionExit0( CCMMSESSION_CONSTRUCTL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CCmmSession::~CCmmSession()
-    {
-    OstTraceFunctionEntry0( DUP1_CCMMSESSION_CCMMSESSION_ENTRY );
-
-    iServer.DecrementSessions();
-
-    delete iDestinationObjects;
-    iDestinationObjects = NULL;
-
-    if ( iDestinationContainer != 0 )
-        {
-        iServer.RemoveContainer( iDestinationContainer );
-        iDestinationContainer = NULL;
-        }
-
-    delete iConnMethodObjects;
-    iConnMethodObjects = NULL;
-
-    if ( iConnMethodContainer != 0 )
-        {
-        iServer.RemoveContainer( iConnMethodContainer );
-        iConnMethodContainer = NULL;
-        }
-
-    if ( iFsConnected )
-        {
-        iFs.Close();
-        iFsConnected = EFalse;
-        }
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_CCMMSESSION_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ServiceL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ServiceL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SERVICEL_ENTRY );
-
-    TInt result( KErrNone );
-    switch ( aMessage.Function() )
-        {
-        case ECmmGetBearerInfoInt:
-            {
-            GetBearerInfoIntL( aMessage );
-            }
-            break;
-        case ECmmGetBearerInfoBool:
-            {
-            GetBearerInfoBoolL( aMessage );
-            }
-            break;
-        case ECmmGetBearerInfoString:
-            {
-            GetBearerInfoStringL( aMessage );
-            }
-            break;
-        case ECmmGetBearerInfoString8:
-            {
-            GetBearerInfoString8L( aMessage );
-            }
-            break;
-        case ECmmGetConnMethodInfoInt:
-            {
-            GetConnMethodInfoIntL( aMessage );
-            }
-            break;
-        case ECmmGetConnMethodInfoBool:
-            {
-            GetConnMethodInfoBoolL( aMessage );
-            }
-            break;
-        case ECmmGetConnMethodInfoString:
-            {
-            GetConnMethodInfoStringL( aMessage );
-            }
-            break;
-        case ECmmGetConnMethodInfoString8:
-            {
-            GetConnMethodInfoString8L( aMessage );
-            }
-            break;
-        case ECmmGetConnMethodArray:
-            {
-            GetConnMethodArrayL( aMessage );
-            }
-            break;
-        case ECmmGetAllDestinations:
-            {
-            GetAllDestinationsL( aMessage );
-            }
-            break;
-        case ECmmGetEasyWlanId:
-            {
-            GetEasyWLANIdL( aMessage );
-            }
-            break;
-        case ECmmRemoveAllReferences: // CM becomes uncategorized.
-            {
-            RemoveAllReferencesL( aMessage );
-            }
-            break;
-        case ECmmGetSupportedBearers:
-            {
-            GetSupportedBearersL( aMessage );
-            }
-            break;
-        case ECmmGetUncategorizedIcon:
-            {
-            GetUncategorizedIconL( aMessage );
-            }
-            break;
-        case ECmmReadDefaultConnection:
-            {
-            ReadDefaultConnectionL( aMessage );
-            }
-            break;
-        case ECmmWriteDefaultConnection:
-            {
-            // Default connection is now just internet snap.
-            result = KErrNotSupported;
-            }
-            break;
-        case ECmmReadGeneralConnectionSettings:
-            {
-            ReadGenConnSettingsL( aMessage );
-            }
-            break;
-        case ECmmWriteGeneralConnectionSettings:
-            {
-            WriteGenConnSettingsL( aMessage );
-            }
-            break;
-        case ECmmGetBearerPriorityArray:
-            {
-            GetBearerPriorityArrayL( aMessage );
-            }
-            break;
-        case ECmmUpdateBearerPriorityArray:
-            {
-            UpdateBearerPriorityArrayL( aMessage );
-            }
-            break;
-        case ECmmCopyConnMethod:
-            {
-            CopyConnMethodL( aMessage );
-            }
-            break;
-        case ECmmMoveConnMethod:
-            {
-            MoveConnMethodL( aMessage );
-            }
-            break;
-        case ECmmRemoveConnMethod:
-            {
-            RemoveConnMethodL( aMessage );
-            }
-            break;
-
-        case EDestGetDestination:
-        case EDestRefresh:
-        case EDestCreateDestinationWithName:
-        case EDestCreateDestinationWithNameAndId:
-        case EDestCloseDestination:
-        case EDestGetConnMethodCount:
-        case EDestGetConnMethodPriority:
-        case EDestGetName:
-        case EDestGetId:
-        case EDestGetElementId:
-        case EDestMetadata:
-        case EDestGetProtectionLevel:
-        case EDestIsConnected:
-        case EDestIsHidden:
-        case EDestIsEqual:
-        case EDestGetIcon:
-        case EDestAddConnMethod:
-        case EDestAddEmbeddedDestination:
-        case EDestDeleteConnMethod:
-        case EDestRemoveConnMethod:
-        case EDestModifyPriority:
-        case EDestSetName:
-        case EDestSetMetadata:
-        case EDestSetProtection:
-        case EDestSetHidden:
-        case EDestUpdate:
-        case EDestDelete:
-        case EDestSetIcon:
-            {
-            ServiceDestinationL( aMessage );
-            }
-            break;
-
-        case ECMGetConnMethodWithId:
-        case ECMRefresh:
-        case ECMCreateConnMethod:
-        case ECMCreateConnMethodWithId:
-        case ECMGetConnMethodFromDestWithIndex:
-        case ECMGetConnMethodFromDestWithId:
-        case ECMCreateConnMethodToDest:
-        case ECMCreateConnMethodToDestWithId:
-        case ECMCreateCopyOfExisting:
-        case ECMCloseConnMethod:
-        case ECMGetIntAttribute:
-        case ECMGetBoolAttribute:
-        case ECMGetStringAttribute:
-        case ECMGetString8Attribute:
-        case ECMIsEqual:
-        case ECMSetIntAttribute:
-        case ECMSetBoolAttribute:
-        case ECMSetStringAttribute:
-        case ECMSetString8Attribute:
-        case ECMDelete:
-        case ECMUpdate:
-        case EDestGetEmbeddedDestination:
-            {
-            ServiceConnMethodL( aMessage );
-            }
-            break;
-        default:
-            {
-            result = KErrNotSupported;
-            }
-            break;
-        }
-
-    aMessage.Complete( result );
-
-    OstTraceFunctionExit0( CCMMSESSION_SERVICEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Finds a connection method instance that belongs to this session and matches
-// the provided ID. Return NULL if no match is found.
-// -----------------------------------------------------------------------------
-//
-CCmmConnMethodInstance* CCmmSession::FindConnMethodInstanceById(
-        const TUint32 aConnMethodId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_FINDCONNMETHODINSTANCEBYID_ENTRY );
-
-    CCmmConnMethodInstance* wantedConnMethodInstance( NULL );
-
-    for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
-        {
-        CCmmConnMethodInstance* connMethodInstance =
-                ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
-        if ( connMethodInstance && connMethodInstance->GetId() == aConnMethodId )
-            {
-            wantedConnMethodInstance = connMethodInstance;
-            break;
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_FINDCONNMETHODINSTANCEBYID_EXIT );
-    return wantedConnMethodInstance;
-    }
-
-// -----------------------------------------------------------------------------
-// Finds a destination instance that belongs to this session and matches
-// the provided handle.
-// -----------------------------------------------------------------------------
-//
-CCmmDestinationInstance* CCmmSession::FindDestinationInstanceByHandleL(
-        const TInt aDestinationHandle )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_FINDDESTINATIONINSTANCEBYHANDLEL_ENTRY );
-
-    return (CCmmDestinationInstance*)iDestinationObjects->AtL( aDestinationHandle );
-    }
-
-// -----------------------------------------------------------------------------
-// Finds a destination instance that belongs to this session and matches
-// the provided ID. Return NULL if no match is found.
-// -----------------------------------------------------------------------------
-//
-CCmmDestinationInstance* CCmmSession::FindDestinationInstanceById(
-        const TUint32 aDestinationId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_FINDDESTINATIONINSTANCEBYID_ENTRY );
-
-    CCmmDestinationInstance* wantedDestinationInstance( NULL );
-
-    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-        {
-        CCmmDestinationInstance* destinationInstance =
-                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-        if ( destinationInstance && destinationInstance->GetId() == aDestinationId )
-            {
-            wantedDestinationInstance = destinationInstance;
-            break;
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_FINDDESTINATIONINSTANCEBYID_EXIT );
-    return wantedDestinationInstance;
-    }
-
-// -----------------------------------------------------------------------------
-// Check from all open destination handles in this session if the given
-// connection method is inside any of them. The given destination is skipped.
-// -----------------------------------------------------------------------------
-//
-TBool CCmmSession::ConnMethodInOtherDestination(
-        const TUint32 aConnMethodId,
-        const TUint32 aDestinationId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CONNMETHODINOTHERDESTINATION_ENTRY );
-
-    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-        {
-        CCmmDestinationInstance* destinationInstance =
-                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-        if ( destinationInstance && destinationInstance->GetId() != aDestinationId )
-            {
-            for ( TInt j = 0; j < destinationInstance->iConnMethodItemArray.Count(); j++ )
-                {
-                if ( destinationInstance->iConnMethodItemArray[i].iId == aConnMethodId )
-                    {
-                    OstTraceFunctionExit0( CCMMSESSION_CONNMETHODINOTHERDESTINATION_EXIT );
-                    return ETrue;
-                    }
-                }
-            }
-        }
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_CONNMETHODINOTHERDESTINATION_EXIT );
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// Check for restrictions for adding an embedded destination from destination
-// instances of all clients.
-// - aDestinationId is the ID of the destination where a destination is beeing
-//   embedded.
-// - aEmbeddedDestinationId is the ID of the destination that is beeing
-//   embedded.
-// -----------------------------------------------------------------------------
-//
-TBool CCmmSession::EmbeddedDestinationConflictsFromAllSessions(
-        const TUint32 aDestinationId,
-        const TUint32 aEmbeddedDestinationId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTSFROMALLSESSIONS_ENTRY );
-
-    return iServer.EmbeddedDestinationConflictsFromAllSessions(
-            aDestinationId,
-            aEmbeddedDestinationId );
-    }
-
-// -----------------------------------------------------------------------------
-// Check for restrictions for adding an embedded destination from destination
-// instances of this session.
-// - aDestinationId is the ID of the destination where a destination is beeing
-//   embedded.
-// - aEmbeddedDestinationId is the ID of the destination that is beeing
-//   embedded.
-//
-// - Check that any destination instance does not contain aDestinationId as
-//   embedded destination.
-// - Check that any destination instance for aEmbeddedDestinationId does not
-//   contain an embedded destination.
-// -----------------------------------------------------------------------------
-//
-TBool CCmmSession::EmbeddedDestinationConflicts(
-        const TUint32 aDestinationId,
-        const TUint32 aEmbeddedDestinationId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTS_ENTRY );
-
-    TBool result( EFalse );
-
-    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-        {
-        CCmmDestinationInstance* destinationInstance =
-                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-        if ( destinationInstance )
-            {
-            if ( destinationInstance->HasEmbeddedWithId( aDestinationId ) ||
-                    ( destinationInstance->GetId() == aEmbeddedDestinationId &&
-                            destinationInstance->HasEmbedded() ) )
-                {
-                result = ETrue;
-                break;
-                }
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_EMBEDDEDDESTINATIONCONFLICTS_EXIT );
-    return result;
-    }
-
-// ---------------------------------------------------------------------------
-// After update to database, refresh temporary ID to real ID if necessary and
-// refresh status information for any related handles for all client sessions.
-// ---------------------------------------------------------------------------
-//
-void CCmmSession::RefreshHandlesForAllSessions( const TCmmIdStruct& aIdStruct )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REFRESHHANDLESFORALLSESSIONS_ENTRY );
-
-    // If the ID structure contains a temporary ID, we need to update the
-    // temporary ID to the real ID for all relevant handles in this session and
-    // cache.
-    if ( aIdStruct.iTemporaryId )
-        {
-        // Real ID tells if this is a destination or connection method.
-
-        if ( aIdStruct.iRealId < KCmmConnMethodIdIntervalMax )
-            {
-            // Connection method. Need to iterate through all destination and
-            // connection method handles.
-
-            // Update the ID of the connection method on session side.
-            for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
-                {
-                CCmmConnMethodInstance* connMethodInstance =
-                        ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
-                if ( connMethodInstance &&
-                        connMethodInstance->GetId() == aIdStruct.iTemporaryId )
-                    {
-                    connMethodInstance->SetId( aIdStruct.iRealId ); //TODO, need to set ID inside records?
-                    break; // Can only be 1 match.
-                    }
-                }
-            // Update the ID of the connection method in cache side also.
-            iCache.RefreshConnMethodId( aIdStruct );
-
-            // Iterate all destinations. If the connection method is in them,
-            // update the ID to real ID.
-            for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-                {
-                CCmmDestinationInstance* destinationInstance =
-                        ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-                if ( destinationInstance )
-                    {
-                    destinationInstance->RefreshConnMethodId( aIdStruct );
-                    }
-                }
-            }
-        else
-            {
-            // Destination. Need to iterate through all destination handles.
-            for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-                {
-                CCmmDestinationInstance* destinationInstance =
-                        ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-                if ( destinationInstance &&
-                        destinationInstance->GetId() == aIdStruct.iTemporaryId )
-                    {
-                    destinationInstance->SetId( aIdStruct.iRealId );
-                    break; // Can only be 1 match.
-                    }
-                }
-            // Update the ID of the destination in cache side also.
-            iCache.RefreshDestinationId( aIdStruct );
-            }
-        }
-
-    // Update status information for all related destination/connection method
-    // handles in all client sessions.
-    iServer.RefreshHandlesForAllSessions( aIdStruct.iRealId );
-
-    OstTraceFunctionExit0( CCMMSESSION_REFRESHHANDLESFORALLSESSIONS_EXIT );
-    }
-
-// ---------------------------------------------------------------------------
-// Removes a connection method from any open destination handle in this
-// session.
-// ---------------------------------------------------------------------------
-//
-void CCmmSession::RemoveConnMethodFromDestinationHandles(
-        const TUint32 aConnMethodId )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REMOVECONNMETHODFROMDESTINATIONHANDLES_ENTRY );
-
-    for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-        {
-        CCmmDestinationInstance* destinationInstance =
-                ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-        if ( destinationInstance )
-            {
-            for ( TInt j = 0; j < destinationInstance->iConnMethodItemArray.Count(); j++ )
-                {
-                if ( destinationInstance->iConnMethodItemArray[j].iId == aConnMethodId )
-                    {
-                    destinationInstance->iConnMethodItemArray.Remove( j );
-                    break;
-                    }
-                }
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_REMOVECONNMETHODFROMDESTINATIONHANDLES_EXIT );
-    }
-
-// ---------------------------------------------------------------------------
-// Notify this session destination/connection method handles about an
-// updated/deleted destination/connection method.
-// ---------------------------------------------------------------------------
-//
-void CCmmSession::RefreshHandles( const TUint32 aId ) const
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REFRESHHANDLES_ENTRY );
-
-    // Destination or connection method.
-    if ( aId < KCmmConnMethodIdIntervalMax )
-        {
-        // Connection method.
-        for ( TInt i = 0; i < iConnMethodObjects->Count(); i++ )
-            {
-            CCmmConnMethodInstance* connMethodInstance =
-                    ( CCmmConnMethodInstance* )( ( *iConnMethodObjects )[i] );
-            if ( connMethodInstance && connMethodInstance->GetId() == aId )
-                {
-                connMethodInstance->SetStatus( ECmmConnMethodStatusChanged );
-                }
-            }
-        }
-    else
-        {
-        // Destination.
-        for ( TInt i = 0; i < iDestinationObjects->Count(); i++ )
-            {
-            CCmmDestinationInstance* destinationInstance =
-                    ( CCmmDestinationInstance* )( ( *iDestinationObjects )[i] );
-            if ( destinationInstance && destinationInstance->GetId() == aId )
-                {
-                destinationInstance->SetStatus( ECmmDestinationStatusChanged ); //TODO, any record status need be set?
-                }
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_REFRESHHANDLES_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBearerInfoIntL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBearerInfoIntL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOINTL_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    TUint32 result = iCache.GetBearerInfoIntL( bearerType, attribute );
-    TPckg<TUint32> resultPckg( result );
-    aMessage.WriteL( 2, resultPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOINTL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBearerInfoBoolL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBearerInfoBoolL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOBOOLL_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    TBool result = iCache.GetBearerInfoBoolL( bearerType, attribute );
-    TPckg<TBool> resultPckg( result );
-    aMessage.WriteL( 2, resultPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOBOOLL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBearerInfoStringL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBearerInfoStringL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOSTRINGL_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    HBufC* result = iCache.GetBearerInfoStringL( bearerType, attribute );
-    if ( !result )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOSTRINGL_EXIT );
-        return;
-        }
-    CleanupStack::PushL( result );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
-    if ( result->Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TPtrC resultPtr = result->Des();
-    aMessage.WriteL( 2, resultPtr );
-    CleanupStack::PopAndDestroy( result );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERINFOSTRINGL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBearerInfoString8L
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBearerInfoString8L( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERINFOSTRING8L_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    HBufC8* result = iCache.GetBearerInfoString8L( bearerType, attribute );
-    if ( !result )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETBEARERINFOSTRING8L_EXIT );
-        return;
-        }
-    CleanupStack::PushL( result );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
-    if ( result->Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TPtrC8 resultPtr = result->Des();
-    aMessage.WriteL( 2, resultPtr );
-    CleanupStack::PopAndDestroy( result );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERINFOSTRING8L_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodInfoIntL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodInfoIntL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOINTL_ENTRY );
-
-    TUint32 cmId( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    TUint32 result = iCache.GetConnectionMethodInfoIntL( cmId, attribute );
-    TPckg<TUint32> resultPckg( result );
-    aMessage.WriteL( 2, resultPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOINTL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodInfoBoolL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodInfoBoolL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOBOOLL_ENTRY );
-
-    TUint32 cmId( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    TBool result = iCache.GetConnectionMethodInfoBoolL( cmId, attribute );
-    TPckg<TBool> resultPckg( result );
-    aMessage.WriteL( 2, resultPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOBOOLL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodInfoStringL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodInfoStringL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOSTRINGL_ENTRY );
-
-    TUint32 cmId( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    HBufC* result = iCache.GetConnectionMethodInfoStringL( cmId, attribute );
-    if ( !result )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOSTRINGL_EXIT );
-        return;
-        }
-    CleanupStack::PushL( result );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
-    if ( result->Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TPtrC resultPtr = result->Des();
-    aMessage.WriteL( 2, resultPtr );
-    CleanupStack::PopAndDestroy( result );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODINFOSTRINGL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodInfoString8L
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodInfoString8L( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODINFOSTRING8L_ENTRY );
-
-    TUint32 cmId( aMessage.Int0() );
-    TUint32 attribute( aMessage.Int1() );
-
-    HBufC8* result = iCache.GetConnectionMethodInfoString8L( cmId, attribute );
-    if ( !result )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODINFOSTRING8L_EXIT );
-        return;
-        }
-    CleanupStack::PushL( result );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 2 );
-    if ( result->Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TPtrC8 resultPtr = result->Des();
-    aMessage.WriteL( 2, resultPtr );
-    CleanupStack::PopAndDestroy( result );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODINFOSTRING8L_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodArrayL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodArrayL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODARRAYL_ENTRY );
-
-    // Read attribute flags from client request.
-    TPckgBuf<TCmmIpcStructGetConnMethods> parametersPckg;
-    aMessage.ReadL( 0, parametersPckg );
-    TCmmIpcStructGetConnMethods attributes = parametersPckg();
-
-    // Create connection method ID array.
-    RArray<TUint32> cmArray;
-    CleanupClosePushL( cmArray );
-    iCache.GetAllConnMethodsL( cmArray, attributes.iCheckBearerType );
-
-    // Check if only legacy connection methods are needed.
-    if ( attributes.iLegacyOnly )
-        {
-        // Remove all referenced connection methods.
-        for ( TInt i = cmArray.Count() - 1; i >= 0; i-- )
-            {
-            if ( iCache.DestinationsContainingConnMethod( cmArray[i] ) )
-                {
-                cmArray.Remove( i );
-                }
-            }
-        }
-
-    // EasyWLAN handling.
-    if ( !attributes.iEasyWlan )
-        {
-        // If there is an EasyWLAN IAP, the ID needs to be removed from the array.
-        TUint32 easyWlanId = iCache.EasyWlanIdL();
-        if ( easyWlanId != 0 )
-            {
-            TInt index = cmArray.Find( easyWlanId );
-            if ( index != KErrNotFound )
-                {
-                cmArray.Remove( index );
-                }
-            }
-        }
-
-    // Check connection method ID count.
-    TInt connMethodCount = cmArray.Count();
-    if ( connMethodCount > aMessage.GetDesMaxLengthL( 2 ) )
-        {
-        // Client buffer is too small to contain all the informarmation. Return
-        // without any answer and the client side will ask again using a bigger
-        // buffer.
-        CleanupStack::PopAndDestroy( &cmArray );
-        return;
-        }
-
-    TPckg<TInt> countPckg( connMethodCount );
-    aMessage.WriteL( 1, countPckg );
-
-    if ( connMethodCount == 0 )
-        {
-        CleanupStack::PopAndDestroy( &cmArray );
-        return;
-        }
-
-    // Write connection method IDs to client.
-    HBufC8* idBuf = HBufC8::NewLC( connMethodCount );
-    TPtr8 bufPtr( idBuf->Des() );
-    for ( TInt i = 0; i < connMethodCount; i++ )
-        {
-        bufPtr.Append( (TUint8)( cmArray[i] & 0x000000FF ) );
-        }
-    aMessage.WriteL( 2, bufPtr );
-
-    CleanupStack::PopAndDestroy( idBuf );
-    CleanupStack::PopAndDestroy( &cmArray );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETCONNMETHODARRAYL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetAllDestinationsL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetAllDestinationsL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETALLDESTINATIONSL_ENTRY );
-
-    TInt destCount = iCache.GetDestinationCount();
-    if ( destCount > aMessage.GetDesMaxLengthL( 1 ) )
-        {
-        // Client buffer is too small to contain all the informarmation. Return
-        // without any answer and the client side will ask again using a bigger
-        // buffer.
-        return;
-        }
-
-    // Write the destination count to client.
-    TPckg<TInt> countPckg( destCount );
-    aMessage.WriteL( 0, countPckg );
-
-    if ( destCount == 0 )
-        {
-        return;
-        }
-
-    // Get the destination IDs from database cache.
-    RArray<TUint32> destArray;
-    CleanupClosePushL( destArray );
-    iCache.GetDestinationsL( destArray );
-
-    HBufC16* idBuf = HBufC16::NewLC( destCount );
-    TPtr16 bufPtr( idBuf->Des() );
-    for ( TInt i = 0; i < destCount; i++ )
-        {
-        bufPtr.Append( destArray[i] );
-        }
-
-    // Write the destination IDs to client.
-    aMessage.WriteL( 1, bufPtr );
-
-    CleanupStack::PopAndDestroy( idBuf );
-    CleanupStack::PopAndDestroy( &destArray );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETALLDESTINATIONSL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetEasyWLANIdL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetEasyWLANIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETEASYWLANIDL_ENTRY );
-
-    TUint32 id = iCache.EasyWlanIdL();
-    TPckg<TUint32> idPckg( id );
-    aMessage.WriteL( 0, idPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETEASYWLANIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetSupportedBearersL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetSupportedBearersL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETSUPPORTEDBEARERSL_ENTRY );
-
-    // Get the supported bearer types.
-    RArray<TUint32> bearerArray;
-    CleanupClosePushL( bearerArray );
-    iServer.CmManager()->SupportedBearersL( bearerArray );
-
-    // Write bearer count to client.
-    TInt bearerCount( bearerArray.Count() );
-    TInt neededBufferSize( bearerCount * sizeof( TUint32 ) );
-    TPckg<TInt> countPckg( bearerCount );
-    aMessage.WriteL( 0, countPckg );
-
-    // Check the client buffer size.
-    if ( neededBufferSize > aMessage.GetDesMaxLengthL( 1 ) || bearerCount == 0 )
-        {
-        // Client buffer is too small to contain all the information. Return
-        // with only the bearer count information and the client side will ask
-        // again using a big enough buffer.
-        CleanupStack::PopAndDestroy( &bearerArray );
-        return;
-        }
-
-    // Add the bearer types into a buffer.
-    HBufC8* bearerBuf = HBufC8::NewLC( neededBufferSize );
-    TPtr8 ptr( bearerBuf->Des() );
-    for ( TInt i = 0; i < bearerCount; i++ )
-        {
-        TUint32 a( bearerArray[i] );
-        ptr.Append( (TUint8*)&a, 4 );
-        }
-
-    // Write the bearer types to client.
-    aMessage.WriteL( 1, ptr );
-
-    CleanupStack::PopAndDestroy( bearerBuf );
-    CleanupStack::PopAndDestroy( &bearerArray );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSUPPORTEDBEARERSL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetUncategorizedIconL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetUncategorizedIconL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETUNCATEGORIZEDICONL_ENTRY );
-
-    HBufC* result = KCmmUncategorizedIconName().AllocLC();
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 0 );
-    if ( result->Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TPtrC resultPtr = result->Des();
-    aMessage.WriteL( 0, resultPtr );
-    CleanupStack::PopAndDestroy( result );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETUNCATEGORIZEDICONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ReadDefaultConnectionL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ReadDefaultConnectionL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_READDEFAULTCONNECTIONL_ENTRY );
-
-    // Default connection is now simply the internet destination.
-    TCmDefConnValue defaultConnection;
-    defaultConnection.iType = ECmDefConnDestination;
-    defaultConnection.iId = 0;
-
-    iCache.InternetDestinationIdL( defaultConnection.iId );
-    if ( defaultConnection.iId == 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    TPckgBuf<TCmDefConnValue> dcPckgBuf( defaultConnection );
-    aMessage.WriteL( 0, dcPckgBuf );
-
-    OstTraceFunctionExit0( CCMMSESSION_READDEFAULTCONNECTIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ReadGenConnSettingsL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ReadGenConnSettingsL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_READGENCONNSETTINGSL_ENTRY );
-
-    TCmGenConnSettings genConnSettings;
-    iCache.ReadGenConnSettingsL( genConnSettings );
-
-    TPckgBuf<TCmGenConnSettings> genConnSettingsPckgBuf( genConnSettings );
-    aMessage.WriteL( 0, genConnSettingsPckgBuf );
-
-    OstTraceFunctionExit0( CCMMSESSION_READGENCONNSETTINGSL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::WriteGenConnSettingsL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::WriteGenConnSettingsL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_WRITEGENCONNSETTINGSL_ENTRY );
-
-    // Read data from client request.
-    TPckgBuf<TCmGenConnSettings> genConnSettingsPckgBuf;
-    aMessage.ReadL( 0, genConnSettingsPckgBuf );
-    TCmGenConnSettings genConnSettings = genConnSettingsPckgBuf();
-
-    iCache.WriteGenConnSettingsL( genConnSettings );
-
-    OstTraceFunctionExit0( CCMMSESSION_WRITEGENCONNSETTINGSL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBearerPriorityArrayL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBearerPriorityArrayL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBEARERPRIORITYARRAYL_ENTRY );
-
-    const TInt maxLength( aMessage.GetDesMaxLengthL( 0 ) );
-    if ( maxLength < 2 )
-        {
-        // Minimum length of 2 is needed to store count and needed length.
-        User::Leave( KErrArgument );
-        }
-
-    RPointerArray<CCmmBearerPriority> bearerPriorityArray;
-    CmmCleanupResetAndDestroyPushL( bearerPriorityArray );
-
-    iCache.CopyBearerPriorityArrayL( bearerPriorityArray );
-    const TInt bearerCountInArray( bearerPriorityArray.Count() );
-    TInt bearerCount( bearerCountInArray );
-
-    TInt maxBufLen( 2 );
-    // Check the length needed for serializing.
-    for ( TInt i = 0; i < bearerCountInArray; i++ )
-        {
-        // Skip if service type is not valid.
-        if ( bearerPriorityArray[i]->ServiceType() &&
-                bearerPriorityArray[i]->ServiceType()->Length() > 0 )
-            {
-            maxBufLen += KCmmBearerPriorityHeaderLength; // Priorities and servicetype length.
-            maxBufLen += bearerPriorityArray[i]->ServiceType()->Length();
-            }
-        else
-            {
-            bearerCount--;
-            }
-        }
-
-    // If given buffer is shorter than needed, just write count and needed length.
-    if ( maxBufLen > maxLength )
-        {
-        HBufC* buffer = HBufC::NewLC( KCmmDefaultBearerPriorityArraySize );
-        TPtr bufferPtr( buffer->Des() );
-
-        bufferPtr.Append( bearerCount );
-        bufferPtr.Append( maxBufLen );
-        aMessage.WriteL( 0, bufferPtr );
-
-        CleanupStack::PopAndDestroy( buffer );
-        CleanupStack::PopAndDestroy( &bearerPriorityArray );
-        OstTraceFunctionExit0( CCMMSESSION_GETBEARERPRIORITYARRAYL_EXIT );
-        return;
-        }
-
-    // Add needed buffer + space for bearerCount and maxlength.
-    HBufC* buffer = HBufC::NewLC( maxBufLen );
-    TPtr bufferPtr( buffer->Des() );
-
-    // Write count and bufmaxLen.
-    bufferPtr.Append( bearerCount );
-    bufferPtr.Append( maxBufLen );
-
-    for ( TInt i = 0; i < bearerCountInArray; i++ )
-        {
-        // Skip if service type is not valid.
-        if ( bearerPriorityArray[i]->ServiceType() &&
-                bearerPriorityArray[i]->ServiceType()->Length() > 0 )
-            {
-            TUint32 priority = bearerPriorityArray[i]->Priority();
-            TUint32 uiPriority = bearerPriorityArray[i]->UiPriority();
-            const HBufC* serviceType = bearerPriorityArray[i]->ServiceType();
-
-            bufferPtr.Append( priority >> KBitsInTwoBytes );
-            bufferPtr.Append( priority & 0x0000FFFF );
-            bufferPtr.Append( uiPriority >> KBitsInTwoBytes );
-            bufferPtr.Append( uiPriority & 0x0000FFFF );
-
-            const TInt stringLength = serviceType->Length();
-            bufferPtr.Append( stringLength );
-            bufferPtr.Append( *serviceType );
-            }
-        }
-    aMessage.WriteL( 0, bufferPtr );
-
-    CleanupStack::PopAndDestroy( buffer );
-    CleanupStack::PopAndDestroy( &bearerPriorityArray );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETBEARERPRIORITYARRAYL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::UpdateBearerPriorityArrayL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::UpdateBearerPriorityArrayL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_UPDATEBEARERPRIORITYARRAYL_ENTRY );
-
-    // Check the disk space.
-    if ( CheckSpaceBelowCriticalLevelL() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    HBufC* bearerPriorityBuf = HBufC::NewLC( aMessage.GetDesMaxLengthL( 0 ) );
-    TPtr bearerPriorityBufPtr( bearerPriorityBuf->Des() );
-
-    aMessage.ReadL( 0, bearerPriorityBufPtr );
-
-    const TInt bearerCount = bearerPriorityBufPtr[0];
-    if ( ( bearerCount < 1 ) || ( aMessage.GetDesMaxLengthL( 0 ) < 2 ) )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    RPointerArray<CCmmBearerPriority> bearerPriorityArray;
-    CmmCleanupResetAndDestroyPushL( bearerPriorityArray );
-
-    TInt position( 2 ); // Start of first priority item.
-    for ( TInt i = 0; i < bearerCount; i++ )
-        {
-        TUint32 priority;
-        TUint32 uiPriority;
-        priority = bearerPriorityBufPtr[position] << KBitsInTwoBytes;
-        position++;
-        priority += bearerPriorityBufPtr[position];
-        position++;
-        uiPriority = bearerPriorityBufPtr[position] << KBitsInTwoBytes;
-        position++;
-        uiPriority += bearerPriorityBufPtr[position];
-        position++;
-        const TInt stringLength = bearerPriorityBufPtr[position];
-        position++;
-        if ( stringLength <= 0 )
-            {
-            User::Leave( KErrArgument );
-            }
-        else
-            {
-            HBufC* serviceName = HBufC::NewLC( stringLength );
-            serviceName->Des().Append( &( bearerPriorityBufPtr[position] ), stringLength );
-            position += stringLength;
-
-            TPtrC tempServiceType( serviceName->Des() );
-            CCmmBearerPriority* item = CCmmBearerPriority::NewLC(
-                    tempServiceType,
-                    priority,
-                    uiPriority );
-            bearerPriorityArray.AppendL( item );
-            CleanupStack::Pop( item );
-
-            CleanupStack::PopAndDestroy( serviceName );
-            }
-        }
-
-    // Update bearer priority array
-    iCache.UpdateBearerPriorityArrayL( bearerPriorityArray );
-
-    CleanupStack::PopAndDestroy( &bearerPriorityArray );
-    CleanupStack::PopAndDestroy( bearerPriorityBuf );
-
-    OstTraceFunctionExit0( CCMMSESSION_UPDATEBEARERPRIORITYARRAYL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Copies a connection method into a destination. If the connection method is
-// in any other destination, it becomes shared. Calls update on the target
-// destination.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CopyConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_COPYCONNMETHODL_ENTRY );
-
-    // Check the disk space.
-    if ( CheckSpaceBelowCriticalLevelL() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    CCmmDestinationInstance* destination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
-    CCmmConnMethodInstance* connMethod =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int1() );
-
-    // Can't add an embedded destination this way.
-    if ( connMethod->IsEmbeddedDestination() )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    // Check the protection level of the destination.
-    // And based on that check the needed capabilities from the client.
-    CMManager::TProtectionLevel protLevel( CMManager::EProtLevel0 );
-    destination->GetProtectionL( protLevel );
-    CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-    if ( protLevel == CMManager::EProtLevel1 )
-        {
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        }
-
-    if ( capabilities == CPolicyServer::EFail )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-
-    // Add connection method into destination.
-    TInt index = destination->AddConnMethodL( *connMethod );
-
-    // Update destination into database.
-    destination->UpdateL();
-
-    // Write the connection method index (priority) inside the destination to client.
-    TPckg<TInt> indexPckg( index );
-    aMessage.WriteL( 2, indexPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_COPYCONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Moves a connection method from one destination to another. Calls update on
-// both the source and target destinations (which also updates the connection
-// method).
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::MoveConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_MOVECONNMETHODL_ENTRY );
-
-    // Check the disk space.
-    if ( CheckSpaceBelowCriticalLevelL() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    // Read data from client request.
-    TPckgBuf<TCmmIpcStructMoveConnMethod> attributesPckg;
-    aMessage.ReadL( 0, attributesPckg );
-    TCmmIpcStructMoveConnMethod attributes = attributesPckg();
-
-    CCmmDestinationInstance* sourceDestination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( attributes.iSourceDestHandle );
-    CCmmDestinationInstance* targetDestination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( attributes.iTargetDestHandle );
-    CCmmConnMethodInstance* connMethod =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( attributes.iConnMethodHandle );
-    TUint32 connMethodId( connMethod->GetId() );
-
-    // Can't add an embedded destination this way.
-    if ( connMethod->IsEmbeddedDestination() )
-        {
-        User::Leave( KErrArgument );
-        }
-    // Check if the connection method is in the source destination.
-    if ( !sourceDestination->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
-        {
-        User::Leave( KErrNotFound );
-        }
-    // Check if the connection method is already in the target destination.
-    if ( targetDestination->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-    // Check if the connection method can be removed from the source destination.
-    if ( sourceDestination->ConnMethodInDestinationButLocked( connMethodId ) )
-        {
-        User::Leave( KErrLocked );
-        }
-    // Check that the connection method is not in use by an active connection.
-    if ( iCache.CheckIfCmConnected( connMethodId ) )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check the protection level of the source and target destination.
-    // And based on those check the needed capabilities from the client.
-    TBool protectionExists( EFalse );
-    CMManager::TProtectionLevel protLevelSource( CMManager::EProtLevel0 );
-    sourceDestination->GetProtectionL( protLevelSource );
-    if ( protLevelSource == CMManager::EProtLevel1 
-            || protLevelSource == CMManager::EProtLevel3 )
-        {
-        protectionExists = ETrue;
-        }
-
-    // If source destination is not protected check the target destination.
-    if ( !protectionExists )
-        {
-        CMManager::TProtectionLevel protLevelTarget( CMManager::EProtLevel0 );
-        targetDestination->GetProtectionL( protLevelTarget );
-        if ( protLevelTarget == CMManager::EProtLevel1 )
-            {
-            protectionExists = ETrue;
-            }
-        }
-
-    CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-    if ( protectionExists )
-        {
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        }
-
-    if ( capabilities == CPolicyServer::EFail )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-
-    // Add connection method into target destination and update it.
-    attributesPckg().iIndex = targetDestination->AddConnMethodL( *connMethod );
-    targetDestination->UpdateL();
-
-    // Remove connection method from source destination and update it.
-    sourceDestination->RemoveConnMethodFromDestinationL( *connMethod, EFalse ); // EFalse to not check connected state again.
-    sourceDestination->UpdateL();
-
-    // Write the index (priority) back to client.
-    aMessage.WriteL( 0, attributesPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_MOVECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Remove a connection method froma destination. Does not call update on the
-// affected destination.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::RemoveConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REMOVECONNMETHODL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int1() );
-
-    // Check the protection level of the destination.
-    // And based on that check the needed capabilities from the client.
-    CMManager::TProtectionLevel protLevel( CMManager::EProtLevel0 );
-    destinationInstance->GetProtectionL( protLevel );
-    CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-    if ( protLevel == CMManager::EProtLevel1 || protLevel == CMManager::EProtLevel3 )
-        {
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        }
-
-    if ( capabilities == CPolicyServer::EFail )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-
-    destinationInstance->RemoveConnMethodFromDestinationL( *connMethodInstance );
-    destinationInstance->UpdateL();
-
-    OstTraceFunctionExit0( CCMMSESSION_REMOVECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Removes a connection method from every destination and make it uncategorized.
-// Updates any destination that contains the connection method.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::RemoveAllReferencesL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REMOVEALLREFERENCESL_ENTRY );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-
-    TBool capabilityCheckNeeded( EFalse );
-    iCache.CheckIfConnMethodBelongsToProtectedDestinationL(
-            *connMethodInstance,
-            capabilityCheckNeeded );
-    if ( capabilityCheckNeeded )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    iCache.CheckIfConnMethodReferencesCanBeRemovedL( *connMethodInstance );
-    iCache.RemoveAllReferencesToConnMethodL( *connMethodInstance );
-
-    OstTraceFunctionExit0( CCMMSESSION_REMOVEALLREFERENCESL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ServiceDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ServiceDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SERVICEDESTINATIONL_ENTRY );
-
-    switch ( aMessage.Function() )
-        {
-        case EDestGetDestination:
-            {
-            GetDestinationL( aMessage );
-            }
-            break;
-        case EDestRefresh:
-            {
-            RefreshDestinationL( aMessage );
-            }
-            break;
-        case EDestCreateDestinationWithName:
-            {
-            CreateDestinationWithNameL( aMessage );
-            }
-            break;
-        case EDestCreateDestinationWithNameAndId:
-            {
-            CreateDestinationWithNameAndIdL( aMessage );
-            }
-            break;
-        case EDestCloseDestination:
-            {
-            CloseDestination( aMessage );
-            }
-            break;
-        case EDestGetConnMethodCount:
-            {
-            GetConnectionMehodCountL( aMessage );
-            }
-            break;
-        case EDestGetConnMethodPriority:
-            {
-            GetConnMethodPriorityL( aMessage );
-            }
-            break;
-        case EDestGetName:
-            {
-            GetDestinationNameL( aMessage );
-            }
-            break;
-        case EDestGetId:
-            {
-            GetDestinationIdL( aMessage );
-            }
-            break;
-        case EDestGetElementId:
-            {
-            GetDestinationElementIdL( aMessage );
-            }
-            break;
-        case EDestMetadata:
-            {
-            GetDestinationMetadataL( aMessage );
-            }
-            break;
-        case EDestGetProtectionLevel:
-            {
-            GetDestinationProtectionLevelL( aMessage );
-            }
-            break;
-        case EDestIsConnected:
-            {
-            IsDestinationConnectedL( aMessage );
-            }
-            break;
-        case EDestIsHidden:
-            {
-            IsDestinationHiddenL( aMessage );
-            }
-            break;
-        case EDestIsEqual:
-            {
-            DestinationIsEqualL( aMessage );
-            }
-            break;
-        case EDestGetIcon:
-            {
-            GetDestinationIconL( aMessage );
-            }
-            break;
-        case EDestAddConnMethod:
-            {
-            DestAddConnMethodL( aMessage );
-            }
-            break;
-        case EDestAddEmbeddedDestination:
-            {
-            DestAddEmbeddedDestinationL( aMessage );
-            }
-            break;
-        case EDestDeleteConnMethod:
-            {
-            DestDeleteConnMethodL( aMessage );
-            }
-            break;
-        case EDestRemoveConnMethod:
-            {
-            DestRemoveConnMethodL( aMessage );
-            }
-            break;
-        case EDestModifyPriority:
-            {
-            ModifyConnMethodPriorityL( aMessage );
-            }
-            break;
-        case EDestSetName:
-            {
-            SetDestinationNameL( aMessage );
-            }
-            break;
-        case EDestSetMetadata:
-            {
-            SetDestinationMetadataL( aMessage );
-            }
-            break;
-        case EDestSetProtection:
-            {
-            SetDestinationProtectionL( aMessage );
-            }
-            break;
-        case EDestSetHidden:
-            {
-            SetDestinationHiddenL( aMessage );
-            }
-            break;
-        case EDestUpdate:
-            {
-            UpdateDestinationL( aMessage );
-            }
-            break;
-        case EDestDelete:
-            {
-            DeleteDestinationL( aMessage );
-            }
-            break;
-        case EDestSetIcon:
-            {
-            SetDestinationIconL( aMessage );
-            }
-            break;
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_SERVICEDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONL_ENTRY );
-
-    // Structure:
-    // - Check arguments.
-    // - Create session instance.
-    // - Ask cache to open/create target and put data to session instance.
-    // - Create subsession and complete message.
-
-    // API side checks that ID is between 0x1000 - 0x1100, and converts if necessary.
-    TUint32 destinationId( aMessage.Int0() );
-
-    // Check that the ID is in valid range.
-    if ( destinationId <= KCmDefaultDestinationAPTagId ||
-            destinationId >= KCmMaxDestinationAPTagId )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    // Check if a destination with given ID exists.
-    if ( !iCache.DestinationExistsWithId( destinationId ) )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    // If this session already has a destination with matching ID open, provide
-    // the client with a reference to the already opened handle.
-    CCmmDestinationInstance* destinationInstance = FindDestinationInstanceById( destinationId );
-    if ( destinationInstance )
-        {
-        TPckg<TInt> existingHandlePckg( destinationInstance->GetHandle() );
-        aMessage.WriteL( 1, existingHandlePckg );
-        User::Leave( KErrAlreadyExists );
-        }
-    destinationInstance = NULL;
-    TPckg<TInt> existingHandlePckg( 0 );
-    aMessage.WriteL( 1, existingHandlePckg );
-
-    destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
-
-    // Cache will open a handle to the destination if not already open, and
-    // copy relevant data into this destination instance.
-    iCache.OpenDestinationL( *destinationInstance, destinationId );
-
-    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
-    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
-    destinationInstance->SetHandle( handle );
-    CleanupStack::Pop( destinationInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt err = aMessage.Write( 3, handlePckg );
-    if ( err )
-        {
-        // Removes from object index and destroys the object.
-        iDestinationObjects->Remove( handle );
-        User::Leave( err );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::RefreshDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::RefreshDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REFRESHDESTINATIONL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    iCache.RefreshDestinationL( *destinationInstance );
-
-    OstTraceFunctionExit0( CCMMSESSION_REFRESHDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::CreateDestinationWithNameL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateDestinationWithNameL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATEDESTINATIONWITHNAMEL_ENTRY );
-
-    // Structure:
-    // - Check arguments.
-    // - Create session instance.
-    // - Ask cache to open/create target and put data to session instance.
-    // - Create subsession and complete message.
-
-    // Load and check name.
-    TInt destNameLength = aMessage.GetDesLength( 0 );
-    if ( destNameLength <= 0 )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    HBufC* destinationName = HBufC::NewLC( destNameLength );
-    TPtr ptrDestinationName = destinationName->Des();
-    aMessage.ReadL( 0, ptrDestinationName );
-
-    // Check if a destination with given name exists (or is already created but not yet saved).
-    if ( iCache.DestinationExistsWithNameL( *destinationName, 0 ) ||
-            iCache.NotSavedDestinationOpenWithNameL( *destinationName, 0 ) )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    CCmmDestinationInstance* destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
-
-    // Create a temporary ID to be used until a real one is obtained from the database.
-    TUint32 temporaryId = iCache.NextFreeTemporaryId();
-
-    // Cache will create the destination data structure and copy the relevant
-    // data to the session instance.
-    iCache.CreateDestinationL( *destinationInstance, *destinationName, temporaryId );
-
-    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
-    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
-    destinationInstance->SetHandle( handle );
-    CleanupStack::Pop( destinationInstance );
-    CleanupStack::PopAndDestroy( destinationName );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt err = aMessage.Write( 3, handlePckg );
-    if ( err )
-        {
-        // Removes from object index and destroys the object.
-        iDestinationObjects->Remove( handle );
-        User::Leave( err );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATEDESTINATIONWITHNAMEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::CreateDestinationWithNameAndIdL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateDestinationWithNameAndIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_ENTRY );
-
-    // Structure:
-    // - Check arguments.
-    // - Create session instance.
-    // - Ask cache to open/create target and put data to session instance.
-    // - Create subsession and complete message.
-
-    // API side checks that ID is between 0x1000 - 0x1100, and converts if necessary.
-    TUint32 destinationId( (TUint32)aMessage.Int1() );
-
-    // Check that the ID is in valid range.
-    if ( destinationId <= KCmDefaultDestinationAPTagId ||
-            destinationId >= KCmMaxDestinationAPTagId )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    // Check if a destination with given ID exists (or is already created but not saved).
-    //TODO, Implement one single method for this check in CCmmCache-class, and call that. CCmmCache::DestinationOpenWithId() can be removed after that.
-    if ( iCache.DestinationExistsWithId( destinationId ) || iCache.DestinationOpenWithId( destinationId ) )
-        {
-        User::Leave( KErrAlreadyExists );
-        //TODO: Destination ID is decided based on network record ID. Connection methods also use network records.
-        //TODO: Add a check here too see that the necessary network record ID is also available.
-        }
-
-    // Load and check name.
-    TInt destNameLength = aMessage.GetDesLength( 0 );
-    if ( destNameLength <= 0 )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    HBufC* destinationName = HBufC::NewLC( destNameLength );
-
-    TPtr ptrDestinationName = destinationName->Des();
-    aMessage.ReadL( 0, ptrDestinationName );
-
-    // Check if a destination with given name exists (or is already created but not yet saved).
-    if ( iCache.DestinationExistsWithNameL( *destinationName, 0 ) ||
-            iCache.NotSavedDestinationOpenWithNameL( *destinationName, 0 ) )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    CCmmDestinationInstance* destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
-
-    // Cache will create the destination data structure and copy the relevant
-    // data to the session instance.
-    iCache.CreateDestinationL( *destinationInstance, *destinationName, destinationId );
-
-    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
-    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
-    destinationInstance->SetHandle( handle );
-    CleanupStack::Pop( destinationInstance );
-    CleanupStack::PopAndDestroy( destinationName );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt err = aMessage.Write( 3, handlePckg );
-    if ( err )
-        {
-        // Removes from object index and destroys the object.
-        iDestinationObjects->Remove( handle );
-        User::Leave( err );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATEDESTINATIONWITHNAMEANDIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::CloseDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CloseDestination( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CLOSEDESTINATION_ENTRY );
-
-    // Check first that the destination instance exists.
-    CObject* destinationObject = iDestinationObjects->At( aMessage.Int3() );
-    if ( destinationObject )
-        {
-        // Destination instance destructor will notify cache.
-        iDestinationObjects->Remove( aMessage.Int3() );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CLOSEDESTINATION_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Return the connection method count from the provided destination.
-// Embedded destinations are included.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnectionMehodCountL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNECTIONMEHODCOUNTL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    TInt connMethodCount( destinationInstance->iConnMethodItemArray.Count() ); // Includes embedded destinations.
-
-    TPckg<TInt> countPckg( connMethodCount );
-    aMessage.WriteL( 0, countPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNECTIONMEHODCOUNTL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodPriorityL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodPriorityL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODPRIORITYL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-    TUint32 connMethodId = connMethodInstance->GetId();
-
-    TInt index( KErrNotFound );
-    for ( TInt i = 0; i < destinationInstance->iConnMethodItemArray.Count(); i++ )
-        {
-        if ( destinationInstance->iConnMethodItemArray[i].iId == connMethodId )
-            {
-            // Index in the connection method array is the connection method
-            // priority. But priority starts from 1, so adjust by +1.
-            index = i + 1;
-            break;
-            }
-        }
-
-    // Leave if given connection method is not inside this destination.
-    User::LeaveIfError( index );
-
-    // Check if the connection method is an embedded destination.
-    if ( connMethodInstance->IsEmbeddedDestination() )
-        {
-        index = CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
-        }
-
-    // If this is a virtual IAP that doesn't link to an IAP, the priority is wildcard.
-    else if ( connMethodInstance->GetBoolAttributeL( CMManager::ECmVirtual ) )
-        {
-        if ( connMethodInstance->GetIntAttributeL( CMManager::ECmNextLayerIapId ) == 0 )
-            {
-            index = CMManager::KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-        }
-
-    TUint priority = ( TUint )index;
-    TPckg<TUint> priorityPckg( priority );
-    aMessage.WriteL( 1, priorityPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODPRIORITYL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationNameL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationNameL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONNAMEL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    HBufC* name = destinationInstance->GetLocalisedDestinationNameL();
-    CleanupStack::PushL( name );
-    TPtrC namePtr( name->Des() );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 0 );
-    if ( namePtr.Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    aMessage.WriteL( 0, namePtr );
-
-    CleanupStack::PopAndDestroy( name );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONNAMEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationIconL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationIconL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONICONL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    HBufC* icon = destinationInstance->GetDestinationIconL();
-    CleanupStack::PushL( icon );
-    TPtrC iconPtr( icon->Des() );
-
-    TInt bufferLen = aMessage.GetDesMaxLength( 0 );
-    if ( iconPtr.Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    aMessage.WriteL( 0, iconPtr );
-    CleanupStack::PopAndDestroy( icon );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONICONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationIdL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONIDL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    TUint32 id = destinationInstance->GetRecordTagFromApRecordL();
-    TPckg<TUint32> idPckg( id );
-    aMessage.WriteL( 0, idPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationElementIdL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationElementIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONELEMENTIDL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    TUint32 elementId = destinationInstance->GetElementIdL();
-    TPckg<TUint32> elementIdPckg( elementId );
-    aMessage.WriteL( 0, elementIdPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONELEMENTIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationMetadataL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationMetadataL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONMETADATAL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-    CMManager::TSnapMetadataField metadataField =
-            ( CMManager::TSnapMetadataField )aMessage.Int0();
-
-    TUint32 metadata( 0 );
-    destinationInstance->GetMetadataL( metadataField, metadata );
-
-    TPckg<TUint32> metadataPckg( metadata );
-    aMessage.WriteL( 1, metadataPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONMETADATAL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetDestinationProtectionLevelL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetDestinationProtectionLevelL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    CMManager::TProtectionLevel protLevel( CMManager::EProtLevel0 );
-    destinationInstance->GetProtectionL( protLevel );
-
-    TPckg<TInt> protLevelPckg( protLevel );
-    aMessage.WriteL( 0, protLevelPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETDESTINATIONPROTECTIONLEVELL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::IsDestinationConnectedL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::IsDestinationConnectedL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_ISDESTINATIONCONNECTEDL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    if ( !iCache.DestinationExistsWithId( destinationInstance->GetId() ) )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    TBool isConnected = iCache.DestinationConnectedL( destinationInstance->GetId() );
-    TPckg<TBool> isConnectedPckg( isConnected );
-    aMessage.WriteL( 0, isConnectedPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_ISDESTINATIONCONNECTEDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::IsDestinationHiddenL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::IsDestinationHiddenL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_ISDESTINATIONHIDDENL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    TUint32 isHiddenMetadata( 0 );
-    destinationInstance->GetMetadataL( CMManager::ESnapMetadataHiddenAgent, isHiddenMetadata );
-
-    TBool isHidden( EFalse );
-    if ( isHiddenMetadata )
-        {
-        isHidden = ETrue;
-        }
-
-    TPckg<TBool> isHiddenPckg( isHidden );
-    aMessage.WriteL( 0, isHiddenPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_ISDESTINATIONHIDDENL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Checks if the destination given as parameter is equal to this destination
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DestinationIsEqualL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DESTINATIONISEQUALL_ENTRY );
-
-    CCmmDestinationInstance* dest =
-        ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    CCmmDestinationInstance* destToBeCompared =
-        ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
-
-    TBool equal( EFalse );
-    if ( dest->GetId() == destToBeCompared->GetId() )
-        {
-        equal = ETrue;
-        }
-
-    TPckg<TBool> equalPckg( equal );
-
-    aMessage.WriteL( 1, equalPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_DESTINATIONISEQUALL_EXIT );
-    }
-
-
-// -----------------------------------------------------------------------------
-// Adds a connection method into a destination. Does not add embedded
-// destinations.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DestAddConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DESTADDCONNMETHODL_ENTRY );
-
-    CCmmDestinationInstance* destination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destination->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CCmmConnMethodInstance* connMethod =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-
-    if ( connMethod->IsEmbeddedDestination() )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    TInt index = destination->AddConnMethodL( *connMethod );
-    TPckg<TInt> indexPckg( index );
-    aMessage.WriteL( 1, indexPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_DESTADDCONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Adds a destination into a destination as an embedded destination.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DestAddEmbeddedDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DESTADDEMBEDDEDDESTINATIONL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel = 
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CCmmDestinationInstance* embeddedDestination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int0() );
-
-    TInt index = destinationInstance->AddEmbeddedDestinationL( *embeddedDestination );
-    TPckg<TInt> indexPckg( index );
-    aMessage.WriteL( 1, indexPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_DESTADDEMBEDDEDDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::DestDeleteConnMethodL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DestDeleteConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DESTDELETECONNMETHODL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-    
-    // Check the protection of destination and if protected check the needed
-    // capabilities.
-    CMManager::TProtectionLevel protLevel = 
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel3 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    // Check the protection of CM and if protected check the needed
-    // capabilities.
-    CheckCapabilitiesForProtectedCML( aMessage, connMethodInstance );
-
-    destinationInstance->DeleteConnMethodFromDestinationL( *connMethodInstance );
-
-    OstTraceFunctionExit0( CCMMSESSION_DESTDELETECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::DestRemoveConnMethodL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DestRemoveConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DESTREMOVECONNMETHODL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-
-    // Check the protection of destination and if protected check the needed
-    // capabilities.
-    CMManager::TProtectionLevel protLevel = 
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel3 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    destinationInstance->RemoveConnMethodFromDestinationL( *connMethodInstance );
-
-    OstTraceFunctionExit0( CCMMSESSION_DESTREMOVECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ModifyConnMethodPriorityL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ModifyConnMethodPriorityL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_MODIFYCONNMETHODPRIORITYL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection of destination and if protected check the needed
-    // capabilities.
-    CMManager::TProtectionLevel protLevel = 
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel3 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-
-    // Index values start from 0 (0 meaning highest priority).
-    TUint index( ( TUint )aMessage.Int1() );
-
-    destinationInstance->ModifyConnMethodPriorityL( *connMethodInstance, index );
-
-    OstTraceFunctionExit0( CCMMSESSION_MODIFYCONNMETHODPRIORITYL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetDestinationNameL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetDestinationNameL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONNAMEL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check that client does not try to change the name of the Internet Destination.
-    TUint32 metadata( 0 );
-    destinationInstance->GetMetadataL( CMManager::ESnapMetadataPurpose, metadata );
-    if ( metadata == CMManager::ESnapPurposeInternet )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel2 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    // Load and check name.
-    TInt destNameLength = aMessage.GetDesLength( 0 );
-    if ( destNameLength <= 0 )
-        {
-        User::Leave( KErrArgument ); //TODO, check also max length?
-        }
-
-    HBufC* newName = HBufC::NewLC( destNameLength );
-    TPtr ptrNewName = newName->Des();
-    aMessage.ReadL( 0, ptrNewName );
-
-    // Check if a destination with given name exists (or is already created but not yet saved).
-    if ( iCache.DestinationExistsWithNameL( *newName, destinationInstance->GetId() ) ||
-            iCache.NotSavedDestinationOpenWithNameL( *newName, destinationInstance->GetId() ) )
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    destinationInstance->SetDestinationNameL( *newName );
-
-    CleanupStack::PopAndDestroy( newName );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONNAMEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetDestinationIconL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetDestinationIconL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONICONL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel2 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    // Load and check name.
-    TInt destIconNameLength = aMessage.GetDesLength( 0 );
-    if ( destIconNameLength < 0 || destIconNameLength > KCmmStringLengthMax )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    HBufC* newIconName = HBufC::NewLC( destIconNameLength );
-    TPtr ptrNewIconName = newIconName->Des();
-    aMessage.ReadL( 0, ptrNewIconName );
-
-    destinationInstance->SetDestinationIconL( *newIconName );
-    CleanupStack::PopAndDestroy( newIconName );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONICONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetDestinationMetadataL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetDestinationMetadataL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONMETADATAL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel2 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CMManager::TSnapMetadataField metadataField =
-            ( CMManager::TSnapMetadataField )aMessage.Int0();
-    TUint32 metadata = aMessage.Int1();
-
-    destinationInstance->SetMetadataL( metadataField, metadata );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONMETADATAL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetDestinationProtectionL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetDestinationProtectionL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONPROTECTIONL_ENTRY );
-
-    // Check the needed capabilities.
-    CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-    capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-    if ( capabilities == CPolicyServer::EFail )
-        {
-        User::Leave( KErrPermissionDenied );
-        }
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-    CMManager::TProtectionLevel protLevel =
-            ( CMManager::TProtectionLevel )aMessage.Int0();
-    destinationInstance->SetProtectionL( protLevel );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONPROTECTIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetDestinationHiddenL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetDestinationHiddenL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETDESTINATIONHIDDENL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-            protLevel == CMManager::EProtLevel2 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    TBool hidden = aMessage.Int0();
-    destinationInstance->SetMetadataL( CMManager::ESnapMetadataHiddenAgent, hidden );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETDESTINATIONHIDDENL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::UpdateDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::UpdateDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_UPDATEDESTINATIONL_ENTRY );
-
-    // Check the disk space.
-    if ( CheckSpaceBelowCriticalLevelL() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection and if protected check the needed capabilities
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-         protLevel == CMManager::EProtLevel2 ||
-         protLevel == CMManager::EProtLevel3 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    destinationInstance->UpdateL();
-
-    OstTraceFunctionExit0( CCMMSESSION_UPDATEDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::DeleteDestinationL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DeleteDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DELETEDESTINATIONL_ENTRY );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( aMessage.Int3() );
-
-    // Check the protection of destination and if protected check the needed
-    // capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destinationInstance->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 ||
-         protLevel == CMManager::EProtLevel2 ||
-         protLevel == CMManager::EProtLevel3 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    iCache.CheckIfDestinationCanBeDeletedL( *destinationInstance );
-    iCache.DeleteDestinationL( *destinationInstance );
-
-    // Close the destination handle. Destination instance destructor will
-    // notify cache. If the reference count for the cache side handle goes to
-    // zero, it will be deleted.
-    iDestinationObjects->Remove( aMessage.Int3() );
-
-    OstTraceFunctionExit0( CCMMSESSION_DELETEDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ServiceConnMethodL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::ServiceConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SERVICECONNMETHODL_ENTRY );
-
-    switch ( aMessage.Function() )
-        {
-        case ECMCreateConnMethod:
-            {
-            CreateConnMethodL( aMessage );
-            }
-            break;
-        case ECMUpdate:
-            {
-            UpdateConnMethodL( aMessage );
-            }
-            break;
-        case ECMCloseConnMethod:
-            {
-            CloseConnMethod( aMessage ); // Can't leave.
-            }
-            break;
-        case ECMDelete:
-            {
-            DeleteConnMethodL( aMessage );
-            }
-            break;
-        case ECMGetConnMethodWithId:
-            {
-            GetConnMethodWithIdL( aMessage );
-            }
-            break;
-        case ECMRefresh:
-            {
-            RefreshConnMethodL( aMessage );
-            }
-            break;
-        case ECMGetIntAttribute:
-            {
-            GetIntAttributeL( aMessage );
-            }
-            break;
-        case ECMGetBoolAttribute:
-            {
-            GetBoolAttributeL( aMessage );
-            }
-            break;
-        case ECMGetStringAttribute:
-            {
-            GetStringAttributeL( aMessage );
-            }
-            break;
-        case ECMGetString8Attribute:
-            {
-            GetString8AttributeL( aMessage );
-            }
-            break;
-        case ECMSetIntAttribute:
-            {
-            SetIntAttributeL( aMessage );
-            }
-            break;
-        case ECMSetBoolAttribute:
-            {
-            SetBoolAttributeL( aMessage );
-            }
-            break;
-        case ECMSetStringAttribute:
-            {
-            SetStringAttributeL( aMessage );
-            }
-            break;
-        case ECMSetString8Attribute:
-            {
-            SetString8AttributeL( aMessage );
-            }
-            break;
-        case ECMCreateConnMethodWithId:
-            {
-            CreateConnMethodWithIdL( aMessage );
-            }
-            break;
-        case ECMGetConnMethodFromDestWithIndex:
-            {
-            GetConnMethodFromDestWithIndexL( aMessage );
-            }
-            break;
-        case ECMGetConnMethodFromDestWithId:
-            {
-            GetConnMethodFromDestWithIdL( aMessage );
-            }
-            break;
-        case ECMCreateConnMethodToDest:
-            {
-            CreateConnMethodToDestL( aMessage );
-            }
-            break;
-        case ECMCreateConnMethodToDestWithId:
-            {
-            CreateConnMethodToDestWithIdL( aMessage );
-            }
-            break;
-        case ECMIsEqual:
-            {
-            CmIsEqualL( aMessage );
-            }
-            break;
-        case ECMCreateCopyOfExisting:
-            {
-            CreateCopyOfExistingL( aMessage );
-            }
-            break;
-        case EDestGetEmbeddedDestination:
-            {
-            GetEmbeddedDestinationL( aMessage );
-            }
-            break;
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_SERVICECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Create a new connection method (not embedded destination).
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODL_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            CCmmConnMethodInstance::NewLC( this, &iCache );
-    iCache.CreateConnMethodL( *connMethodInstance, NULL, bearerType, 0 );
-
-    iConnMethodContainer->AddL( ( CObject* ) connMethodInstance );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethodInstance );
-    connMethodInstance->SetHandle( handle );
-    CleanupStack::Pop( connMethodInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::ConnMethodUpdateL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::UpdateConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_UPDATECONNMETHODL_ENTRY );
-
-    // Check the disk space.
-    if ( CheckSpaceBelowCriticalLevelL() )
-        {
-        User::Leave( KErrDiskFull );
-        }
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check if the Client has capabilities to modify this CM.
-    CheckCapabilitiesForProtectedCML( aMessage, connMethodInstance );
-
-    connMethodInstance->UpdateL();
-
-    OstTraceFunctionExit0( CCMMSESSION_UPDATECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::CloseConnMethod
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CloseConnMethod( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CLOSECONNMETHOD_ENTRY );
-
-    // Check first that the connection method instance exists.
-    CObject* connMethodObject = iConnMethodObjects->At( aMessage.Int3() );
-    if ( connMethodObject )
-        {
-        // Connection method instance destructor will notify cache.
-        iConnMethodObjects->Remove( aMessage.Int3() );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CLOSECONNMETHOD_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::DeleteConnMethodL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::DeleteConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_DELETECONNMETHODL_ENTRY );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Embedded destinations cannot be deleted through connection method handle.
-    if ( connMethodInstance->IsEmbeddedDestination() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    // Check if the Client has capabilities to delete this CM.
-    CheckCapabilitiesForProtectedCML( aMessage, connMethodInstance );
-
-    iCache.CheckIfConnMethodCanBeDeletedL( *connMethodInstance );
-    iCache.DeleteConnMethodL( *connMethodInstance );
-    // Ignore the boolean return value. It is always true, or the
-    // DeleteL()-call leaves.
-
-    // Close the connection method handle. Connection method instance
-    // destructor will notify cache. If the reference count for the cache side
-    // handle goes to zero, it will be deleted.
-    iConnMethodObjects->Remove( aMessage.Int3() );
-
-    OstTraceFunctionExit0( CCMMSESSION_DELETECONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetConnMethodWithIdL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodWithIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODWITHIDL_ENTRY );
-
-    TUint32 connMethodId = aMessage.Int0();
-
-    // If this session already has a connection method with matching id open,
-    // provide the client with a reference to the already opened handle.
-    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
-    if ( cmInstance )
-        {
-        // Also check that the connection method exists in database.
-        if ( iCache.ConnMethodExistsWithId( connMethodId ) )
-            {
-            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
-            aMessage.WriteL( 1, existingHandlePckg );
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    cmInstance = NULL;
-    TPckg<TInt> existingHandlePckg( 0 );
-    aMessage.WriteL( 1, existingHandlePckg );
-
-    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
-    // Will check if connection method ID is valid.
-    iCache.OpenConnMethodL( *cmInstance, NULL, connMethodId );
-
-    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
-    cmInstance->SetHandle( handle );
-    CleanupStack::Pop( cmInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODWITHIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::RefreshConnMethodL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::RefreshConnMethodL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_REFRESHCONNMETHODL_ENTRY );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    iCache.RefreshConnMethodL( *connMethodInstance );
-
-    OstTraceFunctionExit0( CCMMSESSION_REFRESHCONNMETHODL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetIntAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetIntAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETINTATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    TUint32 attribute( aMessage.Int0() );
-    TUint32 value = cm->GetIntAttributeL( attribute );
-
-    TPckg<TUint32> valuePckg( value );
-    aMessage.WriteL( 1, valuePckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETINTATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetBoolAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetBoolAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETBOOLATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    TUint32 attribute( aMessage.Int0() );
-    TBool value = cm->GetBoolAttributeL( attribute );
-
-    TPckg<TBool> valuePckg( value );
-    aMessage.WriteL( 1, valuePckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_GETBOOLATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetStringAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetStringAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETSTRINGATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    TUint32 attribute( aMessage.Int0() );
-    HBufC* value = cm->GetStringAttributeL( attribute );
-    if ( !value )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETSTRINGATTRIBUTEL_EXIT );
-        return;
-        }
-    CleanupStack::PushL( value );
-    TPtrC valuePtr = value->Des();
-
-    // Check the buffer length of the given buffer.
-    TInt bufferLen = aMessage.GetDesMaxLength( 1 );
-    if ( valuePtr.Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    aMessage.WriteL( 1, valuePtr );
-    CleanupStack::PopAndDestroy( value );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSTRINGATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::GetString8AttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetString8AttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETSTRING8ATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    TUint32 attribute( aMessage.Int0() );
-    HBufC8* value = cm->GetString8AttributeL( attribute );
-    if ( !value )
-        {
-        OstTraceFunctionExit0( CCMMSESSION_GETSTRING8ATTRIBUTEL_EXIT );
-        return;
-        }
-    CleanupStack::PushL( value );
-    TPtrC8 valuePtr = value->Des();
-
-    // Check the buffer length of the given buffer.
-    TInt bufferLen = aMessage.GetDesMaxLength( 1 );
-    if ( valuePtr.Length() > bufferLen )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    aMessage.WriteL( 1, valuePtr );
-    CleanupStack::PopAndDestroy( value );
-
-    OstTraceFunctionExit0( DUP1_CCMMSESSION_GETSTRING8ATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetIntAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetIntAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETINTATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check the capability needed if protected CM
-    // ECapabilityWriteDeviceData is checked earlier already.
-    CheckCapabilitiesForProtectedCML( aMessage, cm );
-
-    TUint32 attribute( aMessage.Int0() );
-    TUint32 value( aMessage.Int1() );
-
-    cm->SetIntAttributeL( attribute, value );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETINTATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetBoolAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetBoolAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETBOOLATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check the capability needed if protected CM
-    // ECapabilityWriteDeviceData is checked earlier already.
-    CheckCapabilitiesForProtectedCML( aMessage, cm );
-
-    TUint32 attribute( aMessage.Int0() );
-    TBool value( aMessage.Int1() );
-
-    cm->SetBoolAttributeL( attribute, value );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETBOOLATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetStringAttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetStringAttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETSTRINGATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check the capability needed if protected CM
-    // ECapabilityWriteDeviceData is checked earlier already.
-    CheckCapabilitiesForProtectedCML( aMessage, cm );
-
-    TUint32 attribute( aMessage.Int0() );
-
-    HBufC* value = HBufC::NewLC( aMessage.GetDesLengthL( 1 ) );
-    TPtr valuePtr( value->Des() );
-    aMessage.ReadL( 1, valuePtr );
-
-    cm->SetStringAttributeL( attribute, valuePtr );
-
-    CleanupStack::PopAndDestroy( value );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETSTRINGATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmmSession::SetString8AttributeL
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::SetString8AttributeL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_SETSTRING8ATTRIBUTEL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check the capability needed if protected CM
-    // ECapabilityWriteDeviceData is checked earlier already.
-    CheckCapabilitiesForProtectedCML( aMessage, cm );
-
-    TUint32 attribute( aMessage.Int0() );
-
-    HBufC8* value = HBufC8::NewLC( aMessage.GetDesLengthL( 1 ) );
-    TPtr8 valuePtr( value->Des() );
-    aMessage.ReadL( 1, valuePtr );
-
-    cm->SetString8AttributeL( attribute, valuePtr );
-
-    CleanupStack::PopAndDestroy( value );
-
-    OstTraceFunctionExit0( CCMMSESSION_SETSTRING8ATTRIBUTEL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Create a new connection method (not embedded destination) with specific ID.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateConnMethodWithIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODWITHIDL_ENTRY );
-
-    TUint32 bearerType( aMessage.Int0() );
-    TUint32 connMethodId = ( aMessage.Int1() );
-
-    CCmmConnMethodInstance* connMethod =
-            CCmmConnMethodInstance::NewLC( this, &iCache );
-    // Will check if ID is available.
-    iCache.CreateConnMethodL( *connMethod, NULL, bearerType, connMethodId );
-
-    iConnMethodContainer->AddL( ( CObject* ) connMethod );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
-    connMethod->SetHandle( handle );
-    CleanupStack::Pop( connMethod );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODWITHIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Gets a Connection Method from a Destination with index number.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodFromDestWithIndexL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODFROMDESTWITHINDEXL_ENTRY );
-
-    TInt destinationHandle( aMessage.Int0() );
-    TInt connMethodIndex( aMessage.Int1() );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
-
-    // Check index is in range.
-    if ( connMethodIndex < 0 ||
-         connMethodIndex >= destinationInstance->iConnMethodItemArray.Count() )
-        {
-        User::Leave( KErrArgument );
-        }
-    TInt connMethodId( destinationInstance->iConnMethodItemArray[connMethodIndex].iId );
-
-    // If this session already has a connection method with matching id open
-    // and that connection method correctly belongs to the provided destination,
-    // provide the client with a reference to the already opened handle.
-    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
-    if ( cmInstance &&
-            destinationInstance->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
-        {
-        // Also check that the connection method exists in database.
-        if ( iCache.ConnMethodExistsWithId( connMethodId ) ||
-                iCache.DestinationExistsWithId( connMethodId ) )
-            {
-            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
-            aMessage.WriteL( 2, existingHandlePckg );
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    cmInstance = NULL;
-    TPckg<TInt> existingHandlePckg( 0 );
-    aMessage.WriteL( 2, existingHandlePckg );
-
-    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
-    // Will check if connection method ID is valid.
-    iCache.OpenConnMethodL( *cmInstance, destinationInstance, connMethodId );
-
-    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
-    cmInstance->SetHandle( handle );
-    CleanupStack::Pop( cmInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODFROMDESTWITHINDEXL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Gets a Connection Method from a Destination with Id.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetConnMethodFromDestWithIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETCONNMETHODFROMDESTWITHIDL_ENTRY );
-
-    TInt destinationHandle( aMessage.Int0() );
-    TUint32 connMethodId( aMessage.Int1() );
-
-    CCmmDestinationInstance* destinationInstance =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
-
-    // If this session already has a connection method with matching id open
-    // and that connection method correctly belongs to the provided destination,
-    // provide the client with a reference to the already opened handle.
-    CCmmConnMethodInstance* cmInstance = FindConnMethodInstanceById( connMethodId );
-    if ( cmInstance &&
-            destinationInstance->ValidConnMethodIdInDestinationIncludeEmbedded( connMethodId ) )
-        {
-        // Also check that the connection method exists in database.
-        if ( iCache.ConnMethodExistsWithId( connMethodId ) ||
-                iCache.DestinationExistsWithId( connMethodId ) )
-            {
-            TPckg<TInt> existingHandlePckg( cmInstance->GetHandle() );
-            aMessage.WriteL( 2, existingHandlePckg );
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    cmInstance = NULL;
-    TPckg<TInt> existingHandlePckg( 0 );
-    aMessage.WriteL( 2, existingHandlePckg );
-
-    cmInstance = CCmmConnMethodInstance::NewLC( this, &iCache );
-    // Will check if connection method ID is valid.
-    iCache.OpenConnMethodL( *cmInstance, destinationInstance, connMethodId );
-
-    iConnMethodContainer->AddL( ( CObject* ) cmInstance );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) cmInstance );
-    cmInstance->SetHandle( handle );
-    CleanupStack::Pop( cmInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_GETCONNMETHODFROMDESTWITHIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Create a new connection method (not embedded destination) into a destination.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateConnMethodToDestL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODTODESTL_ENTRY );
-
-    TInt destinationHandle( aMessage.Int0() );
-    TUint32 bearerType( aMessage.Int1() );
-
-    CCmmDestinationInstance* destination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destination->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CCmmConnMethodInstance* connMethod = CCmmConnMethodInstance::NewLC( this, &iCache );
-    iCache.CreateConnMethodL( *connMethod, destination, bearerType, 0 );
-
-    iConnMethodContainer->AddL( ( CObject* ) connMethod );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
-    connMethod->SetHandle( handle );
-    CleanupStack::Pop( connMethod );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODTODESTL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Create a new connection method (not embedded destination) with specific ID
-// into a destination.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateConnMethodToDestWithIdL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATECONNMETHODTODESTWITHIDL_ENTRY );
-
-    TInt destinationHandle( aMessage.Int0() );
-    TUint32 bearerType( aMessage.Int1() );
-    TUint32 connMethodId( aMessage.Int2() );
-
-    CCmmDestinationInstance* destination =
-            ( CCmmDestinationInstance* )iDestinationObjects->AtL( destinationHandle );
-
-    // Check the protection and if protected check the needed capabilities.
-    CMManager::TProtectionLevel protLevel =
-            destination->CurrentProtectionLevelL();
-    if ( protLevel == CMManager::EProtLevel1 )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    CCmmConnMethodInstance* connMethod =
-            CCmmConnMethodInstance::NewLC( this, &iCache );
-    // Will check if ID is available.
-    iCache.CreateConnMethodL( *connMethod, destination, bearerType, connMethodId );
-
-    iConnMethodContainer->AddL( ( CObject* ) connMethod );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) connMethod );
-    connMethod->SetHandle( handle );
-    CleanupStack::Pop( connMethod );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATECONNMETHODTODESTWITHIDL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Checks if the CM given as parameter is equal to this CM
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CmIsEqualL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CMISEQUALL_ENTRY );
-
-    CCmmConnMethodInstance* cm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    CCmmConnMethodInstance* cmToBeCompared =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-
-    TBool equal( EFalse );
-    if ( cm->GetId() == cmToBeCompared->GetId() )
-        {
-        equal = ETrue;
-        }
-
-    TPckg<TBool> equalPckg( equal );
-    aMessage.WriteL( 1, equalPckg );
-
-    OstTraceFunctionExit0( CCMMSESSION_CMISEQUALL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Creates a copy of an existing connection method and opens a handle to it.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CreateCopyOfExistingL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CREATECOPYOFEXISTINGL_ENTRY );
-
-    CCmmConnMethodInstance* sourceCm =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int0() );
-    TUint32 cmId = sourceCm->GetId();
-
-    CCmmConnMethodInstance* targetCm =
-            CCmmConnMethodInstance::NewLC( this, &iCache );
-    iCache.CreateCopyOfConnMethodL( *targetCm, *sourceCm );
-
-    iConnMethodContainer->AddL( ( CObject* ) targetCm );
-    TInt handle = iConnMethodObjects->AddL( ( CObject* ) targetCm );
-    targetCm->SetHandle( handle );
-    CleanupStack::Pop( targetCm );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Remove from object index and destroy the object.
-        iConnMethodObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CREATECOPYOFEXISTINGL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Opens a destination handle to the embedded destination that the provided
-// connection method handle represents.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::GetEmbeddedDestinationL( const RMessage2& aMessage )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_GETEMBEDDEDDESTINATIONL_ENTRY );
-
-    CCmmConnMethodInstance* connMethodInstance =
-            ( CCmmConnMethodInstance* )iConnMethodObjects->AtL( aMessage.Int3() );
-
-    // Check this connection method realy represents an embedded destination.
-    if ( !connMethodInstance->IsEmbeddedDestination() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    TUint32 destinationId = connMethodInstance->GetId();
-
-    // Check that the ID is in valid range.
-    if ( destinationId <= KCmDefaultDestinationAPTagId ||
-            destinationId >= KCmMaxDestinationAPTagId )
-        {
-        User::Leave( KErrCorrupt );
-        }
-
-    // If this session already has a destination with matching ID open, provide
-    // the client with a reference to the already opened handle.
-    CCmmDestinationInstance* destinationInstance = FindDestinationInstanceById( destinationId );
-    if ( destinationInstance )
-        {
-        if ( iCache.DestinationExistsWithId( destinationId ) )
-            {
-            TPckg<TInt> existingHandlePckg( destinationInstance->GetHandle() );
-            aMessage.WriteL( 1, existingHandlePckg );
-            User::Leave( KErrAlreadyExists );
-            }
-        }
-    destinationInstance = NULL;
-    TPckg<TInt> existingHandlePckg( 0 );
-    aMessage.WriteL( 1, existingHandlePckg );
-
-    destinationInstance = CCmmDestinationInstance::NewLC( this, &iCache );
-
-    // Cache will open a handle to the destination if not already open, and
-    // copy relevant data into this destination instance.
-    iCache.OpenDestinationL( *destinationInstance, destinationId ); // Checks ID is valid.
-
-    iDestinationContainer->AddL( ( CObject* ) destinationInstance );
-    TInt handle = iDestinationObjects->AddL( ( CObject* ) destinationInstance );
-    destinationInstance->SetHandle( handle );
-    CleanupStack::Pop( destinationInstance );
-
-    TPckg<TInt> handlePckg( handle );
-    TInt error = aMessage.Write( 3, handlePckg );
-    if ( error )
-        {
-        // Removes from object index and destroys the object.
-        iDestinationObjects->Remove( handle );
-        User::Leave( error );
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_GETEMBEDDEDDESTINATIONL_EXIT );
-    }
-
-// -----------------------------------------------------------------------------
-// Check if CM is protected and if so then check the needed capabilities.
-// -----------------------------------------------------------------------------
-//
-void CCmmSession::CheckCapabilitiesForProtectedCML(
-        const RMessage2& aMessage,
-        CCmmConnMethodInstance* aConnectionMethodInstance )
-    {
-    OstTraceFunctionEntry0( CCMMSESSION_CHECKCAPABILITIESFORPROTECTEDCML_ENTRY );
-
-    TBool prot = aConnectionMethodInstance->GetBoolAttributeL( CMManager::ECmProtected );
-    if ( prot )
-        {
-        CPolicyServer::TCustomResult capabilities( CPolicyServer::EPass );
-        capabilities = iServer.CapabilityCheckWithProtection( aMessage );
-        if ( capabilities == CPolicyServer::EFail )
-            {
-            User::Leave( KErrPermissionDenied );
-            }
-        }
-
-    OstTraceFunctionExit0( CCMMSESSION_CHECKCAPABILITIESFORPROTECTEDCML_EXIT );
-    }
-
-// ---------------------------------------------------------------------------
-// Check if there is space enough in the disk.
-// ---------------------------------------------------------------------------
-//
-TBool CCmmSession::CheckSpaceBelowCriticalLevelL()
-    {
-    if ( !iFsConnected )
-        {
-        TInt err = iFs.Connect();
-        if ( err )
-            {
-            // Error happened in connect --> disk space cannot be checked,
-            // --> return information that everything is ok.
-            return EFalse;
-            }
-        iFsConnected = ETrue;
-        }
-
-    TBool belowCL = SysUtil::FFSSpaceBelowCriticalLevelL( &iFs, KMinimumDiskSpace );
-
-    return belowCL;
-    }
-
-// End of file