convergedconnectionhandler/cchclientapi/src/cchclientobserver.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/convergedconnectionhandler/cchclientapi/src/cchclientobserver.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,334 +0,0 @@
-/*
-* Copyright (c) 2006-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:  Cch client api
-*
-*/
-
-
-// INCLUDE FILES
-#include "cchimpl.h"
-#include "cchclientobserver.h"
-#include "cchlogger.h"
-#include "cchserviceimpl.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 =============================
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::CCchClientObserver
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CCchClientObserver::CCchClientObserver( CCchServiceImpl& aCchService )
-: CActive ( EPriorityStandard )
-, iCchService( aCchService )
-, iBackwardSupportObserver( NULL )
-    {
-    CActiveScheduler::Add( this );
-    }
-    
-CCchClientObserver::~CCchClientObserver()
-    {
-    iObservers.Reset();
-
-    Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CCchClientObserver::ConstructL()
-    {
-    CCHLOGSTRING( "CCchClientObserver::ConstructL: IN" );
-
-    CCHLOGSTRING( "CCchClientObserver::ConstructL: OUT" );
-    }
-// ---------------------------------------------------------------------------
-// CCchClientObserver::NewL
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCchClientObserver* CCchClientObserver::NewL( CCchServiceImpl& aCchService )
-    {
-    CCHLOGSTRING( "CCchClientObserver::NewL: IN" );
-    CCchClientObserver* self = 
-        CCchClientObserver::NewLC( aCchService );
-    CleanupStack::Pop( self );
-    CCHLOGSTRING( "CCchClientObserver::NewL: OUT" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::NewLC
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CCchClientObserver* CCchClientObserver::NewLC( CCchServiceImpl& aCchService )
-    {
-    CCHLOGSTRING( "CCchClientObserver::NewLC: IN" );
-    CCchClientObserver* self = 
-        new (ELeave) CCchClientObserver( aCchService );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CCHLOGSTRING( "CCchClientObserver::NewLC: OUT" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::SetObserver
-// ---------------------------------------------------------------------------
-//
-void CCchClientObserver::SetObserver( MCchServiceStatusObserver& aObserver )
-    {
-    CCHLOGSTRING( "CCchClientObserver::SetObserver: IN - deprecated use AddObserver" );
-    
-    // This is for old API user support remove this when all are using new API
-    if( iBackwardSupportObserver )
-        {
-        // remove existing observer
-        CCHLOGSTRING( "CCchClientObserver::SetObserver: removing old observer" );
-        RemoveObserver();
-        }
-    
-    CCHLOGSTRING( "CCchClientObserver::SetObserver: adding new observer" );
-    // This is for old API user support remove this when all are using new API
-    AddObserver( aObserver );
-    iBackwardSupportObserver = &aObserver;
-
-    CCHLOGSTRING( "CCchClientObserver::SetObserver: OUT" );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCchClientObserver::RemoveObserver
-// ---------------------------------------------------------------------------
-//
-void CCchClientObserver::RemoveObserver( )
-    {    
-    CCHLOGSTRING( "CCchClientObserver::RemoveObserver: IN - deprecated use the one with parameter" );
-    
-    if( iBackwardSupportObserver )
-    	{
-    	// remove using observer set in SetObserver. This is for old API user support
-    	// remove this when all are using new API
-    	RemoveObserver( *iBackwardSupportObserver );
-    	iBackwardSupportObserver = NULL;
-    	}
-    
-    CCHLOGSTRING( "CCchClientObserver::RemoveObserver: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::AddObserver
-// ---------------------------------------------------------------------------
-//
-TInt CCchClientObserver::AddObserver( 
-    MCchServiceStatusObserver& aObserver )
-    {
-    CCHLOGSTRING2( "CCchClientObserver::AddObserver: IN count=%d", iObservers.Count() );
-    
-    TInt index = iObservers.Find( &aObserver );
-
-    // Insert if not already observing
-    if ( index == KErrNotFound )
-        {
-        CCHLOGSTRING( "CCchClientObserver::AddObserver: observer added" );
-        iObservers.Append( &aObserver );
-        }     
-    else
-        {
-        CCHLOGSTRING( "CCchClientObserver::AddObserver: observer KErrAlreadyExists" );
-        return KErrAlreadyExists;   
-        }
-
-    if ( iObservers.Count() )
-        {
-        if ( !IsActive() )
-            {
-            iCchService.CchImpl()->CchClient().SubscribeToEvents( 
-                    TServiceSelection( iCchService.ServiceId(), ECCHUnknown ), 
-                    iServiceStatus, 
-                    iStatus );
-            
-            CCHLOGSTRING( "CCchClientObserver::AddObserver: setting active" );
-            
-            SetActive();
-            }
-        
-        CCHLOGSTRING( "CCchClientObserver::AddObserver: subscrbing to events"  );
-      
-        }
-    else
-        {
-        CCHLOGSTRING( "CCchClientObserver::AddObserver: already subscribed subscrbing to events - skipping"  );
-        }
-    
-    CCHLOGSTRING2( "CCchClientObserver::AddObserver: OUT count=%d", iObservers.Count() );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::RemoveObserver
-// ---------------------------------------------------------------------------
-//
-TInt CCchClientObserver::RemoveObserver( 
-    MCchServiceStatusObserver& aObserver )
-    {
-    CCHLOGSTRING( "CCchClientObserver::RemoveObserver: IN" );
-    CCHLOGSTRING2( "CCchClientObserver::RemoveObserver IN: COUNT=%d", iObservers.Count() );
-    
-    TInt index = iObservers.Find( &aObserver );
-    
-    if ( index == KErrNotFound )
-        {
-        CCHLOGSTRING("CCchClientObserver::RemoveObserver - observer NOT found KErnotFound returned" );
-        return KErrNotFound;   
-        }
-    else
-        {
-        CCHLOGSTRING( "CCchClientObserver::RemoveObserver: removing observer"  );
-        
-        // Observer found.
-        iObservers.Remove( index );
-        iObservers.Compress();
-        
-        // Cancel subcribe to events and free up memory.
-        if ( !iObservers.Count() )
-            {
-            CCHLOGSTRING( "CCchClientObserver::RemoveObserver: unsubscrbing from events"  );                  
-            iCchService.CchImpl()->CchClient().SubscribeToEventsCancel( );      
-            iObservers.Reset();
-            }
-        }
-
-    CCHLOGSTRING2( "CCchClientObserver::RemoveObserver OUT: COUNT=%d", iObservers.Count() );
-    
-    CCHLOGSTRING( "CCchClientObserver::RemoveObserver: OUT" );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::DoCancel
-// ---------------------------------------------------------------------------
-//
-void CCchClientObserver::DoCancel()
-    {
-    CCHLOGSTRING( "CCchClientObserver::DoCancel: IN" );
-	
-	CCHLOGSTRING( "CCchClientObserver::DoCancel: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::RunL
-// ---------------------------------------------------------------------------
-//
-void CCchClientObserver::RunL()
-    {
-    TServiceStatus serviceStatus = iServiceStatus();
-    CCHLOGSTRING( "CCchClientObserver::RunL: IN" );
-
-    //if someone is observing and correct service is changed
-    if ( iObservers.Count() && ( serviceStatus.ServiceId() == iCchService.ServiceId() ) )
-    	{
-    	TCchServiceStatus status;
-    	
-    	status.SetError( serviceStatus.iError );
-    	status.SetState( serviceStatus.iState );
-
-    	CCHLOGSTRING2( "CCchClientObserver::RunL: count=%d", iObservers.Count() );
-    	
-    	// If observer array can change while iterating it add support for that.
-    	// Then there is a need to iterate starting from beginning until done and save 
-    	// already notified observers etc
-    	TInt count( iObservers.Count() );
-    	
- 	    for( TInt i=0; i < count; i++ )
-            {
-            CCHLOGSTRING2( "CCchClientObserver::RunL: looping observers: %d", i );
-            
-            // If some client removes observer in middle of iteration start from beginning of array again.
-            if ( count > iObservers.Count() )
-                {
-                CCHLOGSTRING( "CCchClientObserver::RunL: Start from beginning of array" );
-                
-                i = 0;
-                count = iObservers.Count();
-                }
-            
-            if( iObservers[ i ] )
-                {
-                CCHLOGSTRING2( "CCchClientObserver::RunL: send service status changed to client: %d", i );
-                iObservers[ i ]->ServiceStatusChanged( iCchService.ServiceId(), 
-                    serviceStatus.Type(), status );
-                }
-            }
-        }
-    
-    if ( iObservers.Count() )
-        {
-        if ( !IsActive() )
-            {
-            CCHLOGSTRING( "CCchClientObserver::RunL: Subscribing " );
-            iCchService.CchImpl()->CchClient().SubscribeToEvents( 
-                    TServiceSelection( iCchService.ServiceId(), ECCHUnknown ),
-                    iServiceStatus,
-                    iStatus );
-            
-            CCHLOGSTRING( "CCchClientObserver::RunL: Setting active" );
-            SetActive();    
-           }
-        } 
-
-
-    CCHLOGSTRING( "CCchClientObserver::RunL: OUT" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCchClientObserver::RunError
-// ---------------------------------------------------------------------------
-//
-TInt CCchClientObserver::RunError( TInt /*aError*/ )
-    {
-    CCHLOGSTRING( "CCchClientObserver::RunError: IN OUT" );
-    return KErrNone;
-    }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-//  End of File