cmmanager/cmmgr/cmmapi/src/cmdestinationapi.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 13:17:01 +0300
changeset 27 489cf6208544
parent 20 9c97ad6591ae
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* 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:
* Client side IPC handling for Connection Method Manager server.
*
*/


#include "cmmserverdefs.h"
#include "cmdestinationapi.h"

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


RCmDestinationApi::RCmDestinationApi()
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_RCMDESTINATIONAPI_ENTRY );
    iSessionConnected = EFalse;
    OstTraceFunctionExit0( RCMDESTINATIONAPI_RCMDESTINATIONAPI_EXIT );
    }

TBool RCmDestinationApi::SessionConnected()
    {
    return iSessionConnected;
    }

void RCmDestinationApi::ConnectAndGetDestWithIdL(
        const RSessionBase& aSession,
        const TUint32 aId,
        TInt& aExistingHandle )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_ENTRY );

    if ( iSessionConnected )
        {
        User::Leave( KErrAlreadyExists );
        }

    aExistingHandle = 0;
    TPckg<TInt> pckg( aExistingHandle );
    TIpcArgs args( aId, &pckg );
    TInt result = CreateSubSession( aSession, EDestGetDestination, args );
    if ( !aExistingHandle )
        {
        User::LeaveIfError( result );
        iSessionConnected = ETrue;
        }
    else
        {
        if ( result != KErrAlreadyExists )
            {
            User::Leave( result );
            }
        }

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDGETDESTWITHIDL_EXIT );
    }

void RCmDestinationApi::ConnectAndCreateDestWithNameL(
        const RSessionBase& aSession,
        const TDesC& aName )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_ENTRY );

    if ( iSessionConnected )
        {
        User::Leave( KErrAlreadyExists );
        }
    TIpcArgs args( &aName );
    User::LeaveIfError( CreateSubSession( aSession, EDestCreateDestinationWithName, args ) );
    iSessionConnected = ETrue;

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEL_EXIT );
    }

void RCmDestinationApi::ConnectAndCreateDestWithNameAndIdL(
        const RSessionBase& aSession,
        const TDesC& aName,
        const TUint32 aId )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_ENTRY );

    if ( iSessionConnected )
        {
        User::Leave( KErrAlreadyExists );
        }
    TIpcArgs args( &aName, aId );
    User::LeaveIfError( CreateSubSession( aSession, EDestCreateDestinationWithNameAndId, args ) );
    iSessionConnected = ETrue;

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDCREATEDESTWITHNAMEANDIDL_EXIT );
    }

void RCmDestinationApi::ConnectAndGetConnMethodAsEmbeddedDestL(
        const RSessionBase& aSession,
        const TInt aConnMethodHandle,
        TInt& aExistingHandle )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_ENTRY );

    if ( iSessionConnected )
        {
        User::Leave( KErrAlreadyExists );
        }

    aExistingHandle = 0;
    TPckg<TInt> pckg( aExistingHandle );
    TIpcArgs args( aConnMethodHandle, &pckg );
    TInt result = CreateSubSession( aSession, EDestGetEmbeddedDestination, args );
    if ( !aExistingHandle )
        {
        User::LeaveIfError( result );
        iSessionConnected = ETrue;
        }
    else
        {
        if ( result != KErrAlreadyExists )
            {
            User::Leave( result );
            }
        }

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTANDGETCONNMETHODASEMBEDDEDDESTL_EXIT );
    }

void RCmDestinationApi::Close()
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CLOSE_ENTRY );

    if ( iSessionConnected )
        {
        CloseSubSession( EDestCloseDestination );
        iSessionConnected = EFalse;
        }

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CLOSE_EXIT );
    }

TInt RCmDestinationApi::ConnectionMethodCount( TInt& aCount )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_CONNECTIONMETHODCOUNT_ENTRY );

    TPckg<TInt> pckg( aCount );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestGetConnMethodCount, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_CONNECTIONMETHODCOUNT_EXIT );
    return err;
    }

TInt RCmDestinationApi::Priority( const TInt aHandle, TUint& aPriority )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_PRIORITY_ENTRY );

    TPckg<TUint> pckg( aPriority );
    TIpcArgs args( aHandle, &pckg );
    TInt err = SendReceive( EDestGetConnMethodPriority, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_PRIORITY_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetName( HBufC* aBuffer )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETNAME_ENTRY );

    TPtr descriptor( aBuffer->Des() );
    TIpcArgs args( &descriptor );
    TInt err = SendReceive( EDestGetName, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETNAME_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetId( TUint32& aId )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETID_ENTRY );

    TPckg<TUint32> pckg( aId );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestGetId, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETID_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetElementId( TUint32& aElementId )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETELEMENTID_ENTRY );

    TPckg<TUint32> pckg( aElementId );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestGetElementId, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETELEMENTID_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetMetadata(
        const TUint32 aMetadataField,
        TUint32& aValue )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETMETADATA_ENTRY );

    TPckg<TUint32> pckg( aValue );
    TIpcArgs args( aMetadataField, &pckg );
    TInt err = SendReceive( EDestMetadata, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETMETADATA_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetProtectionLevel( TInt& aProtectionLevel )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETPROTECTIONLEVEL_ENTRY );

    TPckg<TInt> pckg( aProtectionLevel );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestGetProtectionLevel, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETPROTECTIONLEVEL_EXIT );
    return err;
    }

TInt RCmDestinationApi::AddConnectionMethod(
        const TInt aConnMethodHandle,
        TInt& aIndex )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ADDCONNECTIONMETHOD_ENTRY );

    TPckg<TInt> pckg( aIndex );
    TIpcArgs args( aConnMethodHandle, &pckg );
    TInt err = SendReceive( EDestAddConnMethod, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_ADDCONNECTIONMETHOD_EXIT );
    return err;
    }

TInt RCmDestinationApi::AddEmbeddedDestination(
        const TInt aDestHandle,
        TInt& aIndex )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ADDEMBEDDEDDESTINATION_ENTRY );

    TPckg<TInt> pckg( aIndex );
    TIpcArgs args( aDestHandle, &pckg );
    TInt err = SendReceive( EDestAddEmbeddedDestination, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_ADDEMBEDDEDDESTINATION_EXIT );
    return err;
    }

TInt RCmDestinationApi::DeleteConnectionMethod(
        const TInt aConnMethodHandle )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_DELETECONNECTIONMETHOD_ENTRY );

    TIpcArgs args( aConnMethodHandle );
    TInt err = SendReceive( EDestDeleteConnMethod, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_DELETECONNECTIONMETHOD_EXIT );
    return err;
    }

TInt RCmDestinationApi::RemoveConnectionMethod(
        const TInt aConnMethodHandle )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_REMOVECONNECTIONMETHOD_ENTRY );

    TIpcArgs args( aConnMethodHandle );
    TInt err = SendReceive( EDestRemoveConnMethod, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_REMOVECONNECTIONMETHOD_EXIT );
    return err;
    }

TInt RCmDestinationApi::ModifyPriority(
        const TInt aConnMethodHandle,
        const TUint aIndex )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_MODIFYPRIORITY_ENTRY );

    TIpcArgs args( aConnMethodHandle, aIndex );
    TInt err = SendReceive( EDestModifyPriority, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_MODIFYPRIORITY_EXIT );
    return err;
    }

TInt RCmDestinationApi::SetName( const TDesC& aValue )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETNAME_ENTRY );

    TIpcArgs args( &aValue );
    TInt err = SendReceive( EDestSetName, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETNAME_EXIT );
    return err;
    }

TInt RCmDestinationApi::SetMetadata(
        const TUint32 aMetaField,
        const TUint32 aValue )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETMETADATA_ENTRY );

    TIpcArgs args( aMetaField, aValue );
    TInt err = SendReceive( EDestSetMetadata, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETMETADATA_EXIT );
    return err;
    }

TInt RCmDestinationApi::SetProtection( const TInt aValue )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETPROTECTION_ENTRY );

    TIpcArgs args( aValue );
    TInt err = SendReceive( EDestSetProtection, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETPROTECTION_EXIT );
    return err;
    }

TInt RCmDestinationApi::SetHidden( const TBool aHidden )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETHIDDEN_ENTRY );

    TIpcArgs args( aHidden );
    TInt err = SendReceive( EDestSetHidden, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETHIDDEN_EXIT );
    return err;
    }

TInt RCmDestinationApi::Update()
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_UPDATE_ENTRY );

    TInt err = SendReceive( EDestUpdate );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_UPDATE_EXIT );
    return err;
    }

TInt RCmDestinationApi::Refresh()
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_REFRESH_ENTRY );

    TInt err = SendReceive( EDestRefresh );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_REFRESH_EXIT );
    return err;
    }

TInt RCmDestinationApi::Delete()
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_DELETE_ENTRY );

    TInt err = SendReceive( EDestDelete );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_DELETE_EXIT );
    return err;
    }

TInt RCmDestinationApi::IsConnected( TBool& aResult )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISCONNECTED_ENTRY );

    TPckg<TBool> pckg( aResult );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestIsConnected, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISCONNECTED_EXIT );
    return err;
    }

TInt RCmDestinationApi::IsHidden( TBool& aResult )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISHIDDEN_ENTRY );

    TPckg<TBool> pckg( aResult );
    TIpcArgs args( &pckg );
    TInt err = SendReceive( EDestIsHidden, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISHIDDEN_EXIT );
    return err;
    }

TInt RCmDestinationApi::IsEqual( const TInt aHandle, TBool& aResult )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_ISEQUAL_ENTRY );

    TPckg<TBool> pckg( aResult );
    TIpcArgs args( aHandle, &pckg );
    TInt err = SendReceive( EDestIsEqual, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_ISEQUAL_EXIT );
    return err;
    }

TInt RCmDestinationApi::GetIcon( HBufC* aBuffer )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_GETICON_ENTRY );

    TPtr descriptor( aBuffer->Des() );
    TIpcArgs args( &descriptor );
    TInt err = SendReceive( EDestGetIcon, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_GETICON_EXIT );
    return err;
    }

TInt RCmDestinationApi::SetIcon( const TDesC& aValue )
    {
    OstTraceFunctionEntry0( RCMDESTINATIONAPI_SETICON_ENTRY );

    TIpcArgs args( &aValue );
    TInt err = SendReceive( EDestSetIcon, args );

    OstTraceFunctionExit0( RCMDESTINATIONAPI_SETICON_EXIT );
    return err;
    }

// End of file