convergedcallengine/cce/inc/cccecallobserverasynchroniser.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:45:17 +0300
branchRCL_3
changeset 19 7d48bed6ce0c
parent 0 ff3b6d0fd310
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2006 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:  Asynchronises cce call observer calls 
*
*/


#ifndef CCCECALLOBSERVERASYNCHRONISER_H
#define CCCECALLOBSERVERASYNCHRONISER_H


#include <e32base.h>
#include "mccecallobserver.h"


NONSHARABLE_CLASS(CCCECallObserverAsynchroniser)  : 
    public CActive,  
    public MCCECallObserver
    {
    
public:
    
    /**
    * Two-phased constructor
    * 
    */
    static CCCECallObserverAsynchroniser* NewL();
   
    /**
    * Two-phased constructor
    * Leaves pointer in cleanup stack
    */
    static CCCECallObserverAsynchroniser* NewLC();

    /**
     * Destructor
     * 
     */
    ~CCCECallObserverAsynchroniser();
    

    void SetMCCECallObserver(MCCECallObserver* aObserver); 
    
    MCCECallObserver* GetMCCECallObserver();
  
   
   
    /**
    * From CActive
    */
    void RunL();
   
    /**
    * From CActive
    */
    TInt RunError(TInt aError);
   
    /**
    * From CActive
    */
    void DoCancel();      
    
    
    void ErrorOccurred( const TCCPError aError );
    
    /**
    * From MCCECallObserver
    */
    void CallStateChanged( const CCPCall::TCallState aState );

    /**
    * From MCCECallObserver
    */
    void CallStateChangedWithInband( const CCPCall::TCallState aState );

    /**
    * From MCCECallObserver
    */
    void CallEventOccurred( const MCCECallObserver::TCCECallEvent aEvent );

    /**
    * From MCCECallObserver
    */
    void CallDurationChanged( const TTimeIntervalSeconds aDuration );
    
    /**
    * From MCCECallObserver
    */
    void CallCapsChanged( const MCCECallObserver::TCCECallControlCaps aCaps );
    
    /**
    * From MCCECallObserver
    */
    void HandleTransfer( const TBool aAttended, 
                                 const TDesC& aDestination );
                                 
private:
  
   enum TEventType
        {
        EErrorOccurred = 0,
        ECallStateChanged,
        ECallStateChangedWithInband,
        ECallEventOccurred,
        ECallDurationChanged,
        ECallCapsChanged,
        EHandleTransfer         
        };
        
    class TEventStorage
    {
    public:
        TEventType iEventType;
        const TDesC* iDescriptor;
        TInt iInt1;
        TBool iBoolean;
        TTimeIntervalSeconds iDuration;
    };
    
    /**
    * Constructor
    */
    CCCECallObserverAsynchroniser();
 
    /** 
    * Leaving stuff in constructor 
    */
    void ConstructL();
    
    void AddEvent(TEventStorage aEvent);
    
    RArray<TEventStorage> iEvents;
   
    TBool iIsRuning;
    
    MCCECallObserver* iCCECallObserver;
    };
    
    
#endif //CCCECALLOBSERVERASYNCHRONISER_H