diff -r fc7b30ed2058 -r 05bc53fe583b cmmanager/cmmgr/cmmapi/src/cmdestinationext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmmanager/cmmgr/cmmapi/src/cmdestinationext.cpp Tue Aug 31 15:35:44 2010 +0300 @@ -0,0 +1,794 @@ +/* +* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation of RCmDestinationExt. +* +*/ + + +#include +#include + +#include "cmmserverdefs.h" +#include "cmmanagerapi.h" +#include "cmdestinationwrapper.h" +#include "cmconnectionmethodwrapper.h" + +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "cmdestinationextTraces.h" +#endif + + +//----------------------------------------------------------------------------- +// RCmDestinationExt::Close() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::Close() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_CLOSE_ENTRY ); + + if ( iCmDestinationWrapper ) + { + if ( iCmDestinationWrapper->DecreaseReferenceCounter() <= 0 ) + { + delete iCmDestinationWrapper; + } + iCmDestinationWrapper = NULL; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_CLOSE_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::~RCmDestinationExt() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmDestinationExt::~RCmDestinationExt() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY ); + Close(); + OstTraceFunctionExit0( RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::RCmDestinationExt() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmDestinationExt::RCmDestinationExt( + const RCmDestinationExt& aDestination ) + { + OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY ); + + this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper; + if ( iCmDestinationWrapper ) + { + iCmDestinationWrapper->IncreaseReferenceCounter(); + } + + OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::operator=() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmDestinationExt& RCmDestinationExt::operator=( + const RCmDestinationExt& aDestination ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_OPERATOR_ENTRY ); + + if ( this != &aDestination ) + { + Close(); + this->iCmDestinationWrapper = aDestination.iCmDestinationWrapper; + if ( iCmDestinationWrapper ) + { + iCmDestinationWrapper->IncreaseReferenceCounter(); + } + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_OPERATOR_EXIT ); + return *this; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ConnectionMethodCount() +//----------------------------------------------------------------------------- +// +EXPORT_C TInt RCmDestinationExt::ConnectionMethodCount() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_ENTRY ); + + __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(), + User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) ); + + TInt value( 0 ); + TInt err = iCmDestinationWrapper->ConnectionMethodCount( value ); + + if ( err ) + { + value = 0; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODCOUNT_EXIT ); + return value; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodL( + TInt aIndex ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC(); + TInt destHandle = iCmDestinationWrapper->GetHandle(); + TInt existingHandle( 0 ); + cmWrapper->GetConnMethodFromDestWithIndexL( + iCmDestinationWrapper->GetMainSession(), + destHandle, + aIndex, + existingHandle ); + if ( existingHandle ) + { + CleanupStack::PopAndDestroy( cmWrapper ); + cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL( + existingHandle ); + cmWrapper->IncreaseReferenceCounter(); + } + else + { + CleanupStack::Pop( cmWrapper ); + } + + RCmConnectionMethodExt cm; + cm.iCmConnectionMethodWrapper = cmWrapper; + + OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODL_EXIT ); + return cm; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ConnectionMethodByIDL() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmConnectionMethodExt RCmDestinationExt::ConnectionMethodByIDL( + TInt aConnMethodId ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC(); + TInt destHandle = iCmDestinationWrapper->GetHandle(); + TInt existingHandle( 0 ); + cmWrapper->GetConnMethodFromDestWithIdL( + iCmDestinationWrapper->GetMainSession(), + destHandle, + aConnMethodId, + existingHandle ); + if ( existingHandle ) + { + CleanupStack::PopAndDestroy( cmWrapper ); + cmWrapper = iCmDestinationWrapper->GetMainSession()->GetConnMethodWrapperL( + existingHandle ); + cmWrapper->IncreaseReferenceCounter(); + } + else + { + CleanupStack::Pop( cmWrapper ); + } + + RCmConnectionMethodExt cm; + cm.iCmConnectionMethodWrapper = cmWrapper; + + OstTraceFunctionExit0( RCMDESTINATIONEXT_CONNECTIONMETHODBYIDL_EXIT ); + return cm; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::PriorityL() +//----------------------------------------------------------------------------- +// +EXPORT_C TUint RCmDestinationExt::PriorityL( + const RCmConnectionMethodExt& aConnectionMethod ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_PRIORITYL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( !aConnectionMethod.iCmConnectionMethodWrapper || + !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TUint priority( 0 ); + TInt handle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->Priority( handle, priority ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_PRIORITYL_EXIT ); + return priority; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::NameLC() +//----------------------------------------------------------------------------- +// +EXPORT_C HBufC* RCmDestinationExt::NameLC() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_NAMELC_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax ); + TInt err = iCmDestinationWrapper->GetName( buffer ); + User::LeaveIfError( err ); + // Leave buffer in cleanup stack. + + OstTraceFunctionExit0( RCMDESTINATIONEXT_NAMELC_EXIT ); + return buffer; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::Id() +//----------------------------------------------------------------------------- +// +EXPORT_C TUint32 RCmDestinationExt::Id() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ID_ENTRY ); + + __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(), + User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) ); + + TUint32 id( 0 ); + TInt err = iCmDestinationWrapper->GetId( id ); + + if ( err ) + { + id = 0; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ID_EXIT ); + return id; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ElementId() +//----------------------------------------------------------------------------- +// +EXPORT_C TUint32 RCmDestinationExt::ElementId() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ELEMENTID_ENTRY ); + + __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(), + User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) ); + + TUint32 elementId( 0 ); + TInt err = iCmDestinationWrapper->GetElementId( elementId ); + + if ( err ) + { + elementId = 0; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ELEMENTID_EXIT ); + return elementId; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::MetadataL() +//----------------------------------------------------------------------------- +// +EXPORT_C TUint32 RCmDestinationExt::MetadataL( + CMManager::TSnapMetadataField aMetadataField ) const + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_METADATAL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TUint32 value( 0 ); + TInt err = iCmDestinationWrapper->GetMetadata( aMetadataField, value ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_METADATAL_EXIT ); + return value; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ProtectionLevel() +//----------------------------------------------------------------------------- +// +EXPORT_C CMManager::TProtectionLevel RCmDestinationExt::ProtectionLevel() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_PROTECTIONLEVEL_ENTRY ); + + __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(), + User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) ); + + TInt protectionLevel( CMManager::EProtLevel0 ); + TInt err = iCmDestinationWrapper->GetProtectionLevel( protectionLevel ); + + if ( err ) + { + protectionLevel = CMManager::EProtLevel0; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_PROTECTIONLEVEL_EXIT ); + return ( CMManager::TProtectionLevel )protectionLevel; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::IsHidden() +//----------------------------------------------------------------------------- +// +EXPORT_C TBool RCmDestinationExt::IsHidden() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ISHIDDEN_ENTRY ); + + __ASSERT_ALWAYS( iCmDestinationWrapper && iCmDestinationWrapper->SessionConnected(), + User::Panic( KCmmPanicCategoryApi, EDestNotConnectedToServer ) ); + + TBool value( EFalse ); + TInt err = iCmDestinationWrapper->IsHidden( value ); + + if ( err ) + { + value = EFalse; + } + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ISHIDDEN_EXIT ); + return value; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::CreateConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL( + TUint32 aBearerType ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC(); + TInt destHandle = iCmDestinationWrapper->GetHandle(); + cmWrapper->CreateConnMethodToDestL( + iCmDestinationWrapper->GetMainSession(), + destHandle, + aBearerType ); + CleanupStack::Pop( cmWrapper ); + + RCmConnectionMethodExt cm; + cm.iCmConnectionMethodWrapper = cmWrapper; + + OstTraceFunctionExit0( RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT ); + return cm; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::CreateConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmConnectionMethodExt RCmDestinationExt::CreateConnectionMethodL( + TUint32 aBearerType, + TUint32 aConnMethodId ) + { + OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC(); + TInt destHandle = iCmDestinationWrapper->GetHandle(); + cmWrapper->CreateConnMethodToDestWithIdL( + iCmDestinationWrapper->GetMainSession(), + destHandle, + aBearerType, + aConnMethodId ); + CleanupStack::Pop( cmWrapper ); + + RCmConnectionMethodExt cm; + cm.iCmConnectionMethodWrapper = cmWrapper; + + OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_CREATECONNECTIONMETHODL_EXIT ); + return cm; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::AddConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C TInt RCmDestinationExt::AddConnectionMethodL( + RCmConnectionMethodExt aConnectionMethod ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( !aConnectionMethod.iCmConnectionMethodWrapper || + !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TInt index( 0 ); + TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->AddConnectionMethod( connMethodHandle, index ); + + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ADDCONNECTIONMETHODL_EXIT ); + return index; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::AddEmbeddedDestinationL() +//----------------------------------------------------------------------------- +// +EXPORT_C TInt RCmDestinationExt::AddEmbeddedDestinationL( + const RCmDestinationExt& aDestination ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( iCmDestinationWrapper == aDestination.iCmDestinationWrapper ) + { + User::Leave( KErrArgument ); + } + if ( !aDestination.iCmDestinationWrapper || + !aDestination.iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TInt index( 0 ); + TInt destinationHandle = aDestination.iCmDestinationWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->AddEmbeddedDestination( destinationHandle, index ); + + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ADDEMBEDDEDDESTINATIONL_EXIT ); + return index; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::DeleteConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::DeleteConnectionMethodL( + RCmConnectionMethodExt& aConnectionMethod ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( !aConnectionMethod.iCmConnectionMethodWrapper || + !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->DeleteConnectionMethod( connMethodHandle ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_DELETECONNECTIONMETHODL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::RemoveConnectionMethodL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::RemoveConnectionMethodL( + RCmConnectionMethodExt aConnectionMethod ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( !aConnectionMethod.iCmConnectionMethodWrapper || + !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->RemoveConnectionMethod( connMethodHandle ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_REMOVECONNECTIONMETHODL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::ModifyPriorityL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::ModifyPriorityL( + RCmConnectionMethodExt& aConnectionMethod, + TUint aIndex ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_MODIFYPRIORITYL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + if ( !aConnectionMethod.iCmConnectionMethodWrapper || + !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() ) + { + User::Leave( KErrArgument ); + } + + TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->ModifyPriority( connMethodHandle, aIndex ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_MODIFYPRIORITYL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::SetNameL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::SetNameL( const TDesC& aName ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETNAMEL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->SetName( aName ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_SETNAMEL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::SetMetadataL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::SetMetadataL( + CMManager::TSnapMetadataField aMetadataField, + TUint32 aValue ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETMETADATAL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->SetMetadata( aMetadataField, aValue ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_SETMETADATAL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::SetProtectionL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::SetProtectionL( CMManager::TProtectionLevel aProtLevel ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETPROTECTIONL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->SetProtection( aProtLevel ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_SETPROTECTIONL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::SetHiddenL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::SetHiddenL( TBool aHidden ) + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_SETHIDDENL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->SetHidden( aHidden ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_SETHIDDENL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::UpdateL() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::UpdateL() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_UPDATEL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->Update(); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_UPDATEL_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::DeleteLD() +//----------------------------------------------------------------------------- +// +EXPORT_C void RCmDestinationExt::DeleteLD() + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_DELETELD_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TInt err = iCmDestinationWrapper->Delete(); + User::LeaveIfError( err ); + + // Instead of calling Close(), we need to force this handle closed even if + // copies have been made. So we delete the destination wrapper directly. + delete iCmDestinationWrapper; + iCmDestinationWrapper = NULL; + + OstTraceFunctionExit0( RCMDESTINATIONEXT_DELETELD_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::IsConnectedL() +//----------------------------------------------------------------------------- +// +EXPORT_C TBool RCmDestinationExt::IsConnectedL() const + { + OstTraceFunctionEntry0( RCMDESTINATIONEXT_ISCONNECTEDL_ENTRY ); + + if ( !iCmDestinationWrapper || !iCmDestinationWrapper->SessionConnected() ) + { + User::Leave( KErrBadHandle ); + } + + TBool value( 0 ); + TInt err = iCmDestinationWrapper->IsConnected( value ); + User::LeaveIfError( err ); + + OstTraceFunctionExit0( RCMDESTINATIONEXT_ISCONNECTEDL_EXIT ); + return value; + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::RCmDestinationExt() +//----------------------------------------------------------------------------- +// +EXPORT_C RCmDestinationExt::RCmDestinationExt() : iCmDestinationWrapper( NULL ) + { + OstTraceFunctionEntry0( DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_ENTRY ); + OstTraceFunctionExit0( DUP2_RCMDESTINATIONEXT_RCMDESTINATIONEXT_EXIT ); + } + +//----------------------------------------------------------------------------- +// RCmDestinationExt::operator==() +//----------------------------------------------------------------------------- +// +EXPORT_C TBool RCmDestinationExt::operator==( + const RCmDestinationExt& aDestination ) const + { + OstTraceFunctionEntry0( DUP1_RCMDESTINATIONEXT_OPERATOR_ENTRY ); + + TBool result( EFalse ); + if ( !aDestination.iCmDestinationWrapper ) + { + if ( !iCmDestinationWrapper ) + { + result = ETrue; // Both empty. + } + else + { + result = EFalse; + } + } + else if ( !iCmDestinationWrapper ) + { + result = EFalse; + } + else + { + // Both destination objects have wrappers. + + if ( !iCmDestinationWrapper->SessionConnected() || + !aDestination.iCmDestinationWrapper->SessionConnected() ) + { + result = EFalse; + } + else + { + // Both destination objects are connected to server. + + TInt handle = aDestination.iCmDestinationWrapper->GetHandle(); + TInt err = iCmDestinationWrapper->IsEqual( handle, result ); + if ( err ) + { + result = EFalse; + } + } + } + + OstTraceFunctionExit0( DUP1_RCMDESTINATIONEXT_OPERATOR_EXIT ); + return result; + } + +//----------------------------------------------------------------------------- +//RCmDestinationExt::operator!=() +//----------------------------------------------------------------------------- +// +EXPORT_C TBool RCmDestinationExt::operator!=( + const RCmDestinationExt& aDestination ) const + { + OstTraceFunctionEntry0( DUP2_RCMDESTINATIONEXT_OPERATOR_ENTRY ); + + TBool result = !( operator==( aDestination ) ); + + OstTraceFunctionExit0( DUP2_RCMDESTINATIONEXT_OPERATOR_EXIT ); + return result; + } + +// End of file