cmmanager/cmmgr/cmmapi/src/cmconnectionmethodwrapper.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:53:07 +0300
changeset 20 9c97ad6591ae
child 40 c5b848e6c7d1
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
* 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:
* Collects API calls from RCmConnectionMethod- and
* RCmConnectionMethodExt-classes.
*
*/


#include "cmconnectionmethodwrapper.h"
#include "cmmanagerapi.h"

#include "OstTraceDefinitions.h"
#ifdef OST_TRACE_COMPILER_IN_USE
#include "cmconnectionmethodwrapperTraces.h"
#endif


CCmConnectionMethodWrapper* CCmConnectionMethodWrapper::NewL()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_NEWL_ENTRY );

    CCmConnectionMethodWrapper* self = CCmConnectionMethodWrapper::NewLC();
    CleanupStack::Pop( self );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_NEWL_EXIT );
    return self;
    }

CCmConnectionMethodWrapper* CCmConnectionMethodWrapper::NewLC()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_NEWLC_ENTRY );

    CCmConnectionMethodWrapper* self = new (ELeave) CCmConnectionMethodWrapper;
    CleanupStack::PushL( self );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_NEWLC_EXIT );
    return self;
    }

CCmConnectionMethodWrapper::~CCmConnectionMethodWrapper()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY );

    iCmConnectionMethodApi.Close();

    if ( iCmManagerApi )
        {
        iCmManagerApi->RemoveConnMethodWrapper( this );
        iCmManagerApi = NULL;
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT );
    }

CCmConnectionMethodWrapper::CCmConnectionMethodWrapper()
    {
    OstTraceFunctionEntry0( DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_ENTRY );

    iCmManagerApi = NULL;
    iReferenceCounter = 1;

    OstTraceFunctionExit0( DUP1_CCMCONNECTIONMETHODWRAPPER_CCMCONNECTIONMETHODWRAPPER_EXIT );
    }

void CCmConnectionMethodWrapper::GetConnMethodWithIdL(
        RCmManagerApi* aCmManagerApi,
        const TUint32 aIapId,
        TInt& aExistingHandle )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndGetConnMethodWithIdL( *aCmManagerApi, aIapId, aExistingHandle );
    if ( !aExistingHandle )
        {
        iCmManagerApi->StoreConnMethodWrapper( this );
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODWITHIDL_EXIT );
    }

void CCmConnectionMethodWrapper::GetConnMethodFromDestWithIndexL(
        RCmManagerApi* aCmManagerApi,
        const TInt aDestHandle,
        const TInt aIndex,
        TInt& aExistingHandle )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndGetConnMethodFromDestWithIndexL(
            *aCmManagerApi,
            aDestHandle,
            aIndex,
            aExistingHandle );
    if ( !aExistingHandle )
        {
        iCmManagerApi->StoreConnMethodWrapper( this );
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHINDEXL_EXIT );
    }

void CCmConnectionMethodWrapper::GetConnMethodFromDestWithIdL(
        RCmManagerApi* aCmManagerApi,
        const TInt aDestHandle,
        const TInt aIapId,
        TInt& aExistingHandle )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndGetConnMethodFromDestWithIdL(
            *aCmManagerApi,
            aDestHandle,
            aIapId,
            aExistingHandle );
    if ( !aExistingHandle )
        {
        iCmManagerApi->StoreConnMethodWrapper( this );
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETCONNMETHODFROMDESTWITHIDL_EXIT );
    }

void CCmConnectionMethodWrapper::CreateConnMethodL(
        RCmManagerApi* aCmManagerApi,
        const TUint32 aBearerType )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndCreateConnMethodL(
            *aCmManagerApi,
            aBearerType );
    iCmManagerApi->StoreConnMethodWrapper( this );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODL_EXIT );
    }

void CCmConnectionMethodWrapper::CreateConnMethodWithIdL(
        RCmManagerApi* aCmManagerApi,
        const TUint32 aBearerType,
        const TUint32 aIapId )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndCreateConnMethodWithIdL(
            *aCmManagerApi,
            aBearerType,
            aIapId );
    iCmManagerApi->StoreConnMethodWrapper( this );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODWITHIDL_EXIT );
    }

TInt CCmConnectionMethodWrapper::CreateConnMethodCopy(
        RCmManagerApi* aCmManagerApi,
        const TInt aConnMethodHandle )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODCOPY_ENTRY );

    TInt err( KErrNone );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        err = KErrAlreadyExists;
        }
    else
        {
        err = iCmConnectionMethodApi.ConnectAndCreateConnMethodCopy(
                *aCmManagerApi,
                aConnMethodHandle );
        if ( !err )
            {
            iCmManagerApi = aCmManagerApi;
            iCmManagerApi->StoreConnMethodWrapper( this );
            }
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODCOPY_EXIT );
    return err;
    }

void CCmConnectionMethodWrapper::CreateConnMethodToDestL(
        RCmManagerApi* aCmManagerApi,
        const TInt aDestHandle,
        const TUint32 aBearerType )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndCreateConnMethodToDestL(
            *aCmManagerApi,
            aDestHandle,
            aBearerType );
    iCmManagerApi->StoreConnMethodWrapper( this );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTL_EXIT );
    }

void CCmConnectionMethodWrapper::CreateConnMethodToDestWithIdL(
        RCmManagerApi* aCmManagerApi,
        const TInt aDestHandle,
        const TUint32 aBearerType,
        const TUint32 aIapId )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_ENTRY );

    if ( iCmManagerApi || iCmConnectionMethodApi.SessionConnected() )
        {
        User::Leave( KErrAlreadyExists );
        }

    iCmManagerApi = aCmManagerApi;
    iCmConnectionMethodApi.ConnectAndCreateConnMethodToDestWithIdL(
            *aCmManagerApi,
            aDestHandle,
            aBearerType,
            aIapId );
    iCmManagerApi->StoreConnMethodWrapper( this );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CREATECONNMETHODFROMDESTWITHIDL_EXIT );
    }

TInt CCmConnectionMethodWrapper::GetIntAttribute(
        const TUint32 aAttribute,
        TUint32& aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETINTATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.GetIntAttribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETINTATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::GetBoolAttribute(
        const TUint32 aAttribute,
        TBool& aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETBOOLATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.GetBoolAttribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETBOOLATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::GetStringAttribute(
        const TUint32 aAttribute,
        HBufC* aBuffer )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETSTRINGATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.GetStringAttribute( aAttribute, aBuffer );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETSTRINGATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::GetString8Attribute(
        const TUint32 aAttribute,
        HBufC8* aBuffer8 )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_GETSTRING8ATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.GetString8Attribute( aAttribute, aBuffer8 );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_GETSTRING8ATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::SetIntAttribute(
        const TUint32 aAttribute,
        const TUint32 aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETINTATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.SetIntAttribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETINTATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::SetBoolAttribute(
        const TUint32 aAttribute,
        const TBool aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETBOOLATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.SetBoolAttribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETBOOLATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::SetStringAttribute(
        const TUint32 aAttribute,
        const TDesC16& aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETSTRINGATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.SetStringAttribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETSTRINGATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::SetString8Attribute(
        const TUint32 aAttribute,
        const TDesC8& aValue )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_SETSTRING8ATTRIBUTE_ENTRY );

    TInt err = iCmConnectionMethodApi.SetString8Attribute( aAttribute, aValue );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_SETSTRING8ATTRIBUTE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::Update()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_UPDATE_ENTRY );

    TInt result = iCmConnectionMethodApi.Update();

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_UPDATE_EXIT );
    return result;
    }

TInt CCmConnectionMethodWrapper::Refresh()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_REFRESH_ENTRY );

    TInt result = iCmConnectionMethodApi.Refresh();

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_REFRESH_EXIT );
    return result;
    }

TInt CCmConnectionMethodWrapper::Delete( TBool& aResult )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_DELETE_ENTRY );

    TInt err = iCmConnectionMethodApi.Delete( aResult );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_DELETE_EXIT );
    return err;
    }

TInt CCmConnectionMethodWrapper::IsEqual( const TInt aHandle, TBool& aResult )
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_ISEQUAL_ENTRY );

    TInt err = iCmConnectionMethodApi.IsEqual( aHandle, aResult );

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_ISEQUAL_EXIT );
    return err;
    }

TBool CCmConnectionMethodWrapper::SessionConnected() const
    {
    return iCmConnectionMethodApi.SessionConnected();
    }

void CCmConnectionMethodWrapper::CloseSession()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_ENTRY );
    iCmConnectionMethodApi.Close();
    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_CLOSESESSION_EXIT );
    }

TInt CCmConnectionMethodWrapper::GetHandle() const
    {
    return iCmConnectionMethodApi.SubSessionHandle();
    }

RCmManagerApi* CCmConnectionMethodWrapper::GetMainSession() const
    {
    return iCmManagerApi;
    }

void CCmConnectionMethodWrapper::IncreaseReferenceCounter()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_INCREASEREFERENCECOUNTER_ENTRY );
    iReferenceCounter++;
    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_INCREASEREFERENCECOUNTER_EXIT );
    }

TInt CCmConnectionMethodWrapper::DecreaseReferenceCounter()
    {
    OstTraceFunctionEntry0( CCMCONNECTIONMETHODWRAPPER_DECREASEREFERENCECOUNTER_ENTRY );

    iReferenceCounter--;
    if ( iReferenceCounter < 0 )
        {
        iReferenceCounter = 0;
        }

    OstTraceFunctionExit0( CCMCONNECTIONMETHODWRAPPER_DECREASEREFERENCECOUNTER_EXIT );
    return iReferenceCounter;
    }

// End of file