convergedconnectionhandler/cchserver/src/cchplugin.cpp
changeset 0 a4daefaec16c
--- /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