diff -r 000000000000 -r a4daefaec16c convergedconnectionhandler/cchserver/src/cchplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedconnectionhandler/cchserver/src/cchplugin.cpp Mon Jan 18 20:12:36 2010 +0200 @@ -0,0 +1,191 @@ +/* +* Copyright (c) 2007 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: CCCHPlugin implementation +* +*/ + + +// INCLUDE FILES +#include "cchlogger.h" +#include "cchplugin.h" +#include "cchservice.h" +#include "cchservicenotifier.h" + +// EXTERNAL DATA STRUCTURES +// None + +// EXTERNAL FUNCTION PROTOTYPES +// None + +// CONSTANTS +// None + +// MACROS +// None + +// LOCAL CONSTANTS AND MACROS +// None + +// MODULE DATA STRUCTURES +// None + +// LOCAL FUNCTION PROTOTYPES +// None + +// FORWARD DECLARATIONS +// None + +// ============================= LOCAL FUNCTIONS ============================= + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CCCHPlugin::CCCHPlugin +// C++ default constructor can NOT contain any code, that might leave. +// --------------------------------------------------------------------------- +// +CCCHPlugin::CCCHPlugin( TUid aUid ) : + iUid( aUid ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::ConstructL +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CCCHPlugin::ConstructL( TUid aUid ) + { + CCHLOGSTRING( "CCCHPlugin::ConstructL" ); + CCHLOGSTRING2( " Uid: 0x%X", aUid ); + + iPlugin = CCchService::NewL( aUid, *this ); + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::NewL +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CCCHPlugin* CCCHPlugin::NewL( TUid aUid ) + { + CCCHPlugin* self = new (ELeave) CCCHPlugin( aUid ); + CleanupStack::PushL( self ); + self->ConstructL( aUid ); + CleanupStack::Pop( self ); + return self; + } + +// Destructor +CCCHPlugin::~CCCHPlugin() + { + iObservers.Reset(); + + delete iPlugin; + iPlugin = NULL; + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::CheckUid +// +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +TBool CCCHPlugin::CheckUid( const TUid aUid ) const + { + return iUid == aUid; + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::Plugin +// +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +CCchService* CCCHPlugin::Plugin() const + { + return iPlugin; + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::SetServiceNotifier +// +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CCCHPlugin::SetServiceNotifier( MCCHServiceNotifier* aObserver ) + { + CCHLOGSTRING( "CCCHPlugin::SetServiceNotifier" ); + + TInt index( iObservers.Find( aObserver ) ); + + if ( KErrNotFound == index ) + { + iObservers.Append( aObserver ); + } + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::RemoveServiceNotifier +// +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CCCHPlugin::RemoveServiceNotifier( MCCHServiceNotifier* aObserver ) + { + CCHLOGSTRING( "CCCHPlugin::RemoveServiceNotifier" ); + + TInt index( iObservers.Find( aObserver ) ); + + if ( KErrNotFound != index ) + { + iObservers.Remove( index ); + iObservers.Compress(); + } + } + +// --------------------------------------------------------------------------- +// CCCHPlugin::ServiceStateChanged +// +// (other items were commented in a header). +// --------------------------------------------------------------------------- +// +void CCCHPlugin::ServiceStateChanged( + const TServiceSelection aServiceSelection, + TCCHSubserviceState aState, TInt aError ) + { + CCHLOGSTRING( "CCCHPlugin::ServiceStateChanged" ); + CCHLOGSTRING2( " Service Id: %d", aServiceSelection.iServiceId ); + CCHLOGSTRING2( " SubService's Type: %d", aServiceSelection.iType ); + CCHLOGSTRING2( " State: %d", aState ); + CCHLOGSTRING2( " Error: %d", aError ); + + for ( TInt i( 0 ); i < iObservers.Count(); i++ ) + { + if ( iObservers[ i ] ) + { + TRAP_IGNORE( + iObservers[ i ]->StateChangedL( + aServiceSelection.iServiceId, + aServiceSelection.iType, + aState, + aError ) ); + } + } + } + +// ========================== OTHER EXPORTED FUNCTIONS ======================= + +// End of File