videoutils_plat/videoconnutility_api/inc/ipvideo/vcxconnectionutility.h
author hgs
Thu, 01 Apr 2010 22:28:42 +0300
changeset 24 996057503846
parent 0 822a42b6c3f1
child 11 d814ed7f9a12
permissions -rw-r--r--
201002

/*
* 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 the License "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:    Class to handle connection creation.*
*/


#ifndef __VCX_CONNUTIL_H_
#define __VCX_CONNUTIL_H_

// INCLUDES
#include <e32base.h>

// FORWARD DECLARATIONS
class CVcxConnUtilImpl;
class MConnUtilEngineObserver;


// CLASS DECLARATION
/**
* Class is the main interface class for the vcxconnectionutility.dll.
* By using this class, client can fetch iap ID and maintain an active connection
* for that iap.
* Usage:
*  @code
*  #include <vcxconnectionutility.h>
*  #include <vcxconnutilengineobserver.h> // for receiving events from ALR and iap changes
*
*  // Instantiation of connectionutility is done by Instance()
*  // every Instance call increments internal reference count by 
*  // one. When reference count is decremented to 0 deallocation
*  // occurs. Client should make sure that it calls as many
*  // DecreaseReferenceCount() as it calls InstanceL()
*
*  CVcxConnectionUtility* conUtil = CVcxConnectionUtility::InstanceL();
* 
*  // in case client is interested in events from ALR or from iap changes,
*  // client must implement MConnUtilEngineObserver interface and register
*  // as observer. See MConnUtilEngineObserver documentation for details 
*  conUtil->RegisterObserverL( this );
* 
*  // getting the best possible iap is handled by the GetIap
*  TInt err( KErrNone );
*  TUint32 iapId( 0 );
*  err = conUtil->GetIap( iapId, EFalse );
*  // in case client does not want the "connecting" dialog  // shown, aSilent
*  // parameter should be ETrue     
*
*  // client can try to explicitly disconnect connection, but if there are other references 
*  // connection is not closed.
*  // suggestion is to maintain connection at all time as long as vcxconnectionutility 
*  // is being used and just react to notifications 
*  conUtil->Disconnect();
*  
*  // when connectionutility is no longer needed, client must call DecreaseReferenceCount()
*  // if there are no more references left, memory allocated for the library is deallocated
*  // and possible active connection is closed
*  // if client has registered as observer, it should deregister first 
*  conUtil->RemoveObserver();
*  conUtil->DecreaseReferenceCount();  
*  conutil = NULL;
* 
*  @endcode
* 
*
* @lib vcxconnectionutility.dll
*/
NONSHARABLE_CLASS( CVcxConnectionUtility) : public CActive
    {

    public: // Constructors and destructor

        /**
         * returns instance of the singleton object. This increases
         * local reference count by one, so utility members should
         * not be called through this.
         *
         * @return Pointer to CVcxConnectionUtility object.
         */
        IMPORT_C static CVcxConnectionUtility* InstanceL();
        
        /**
        * Remove the reference to this connectionutility instance.
        * 
        * This should be called when client does not need 
        * utility anymore.
        *
        * Decreases the reference count by one. When
        * all references are removed, the ui engine is destructed.
        */
        IMPORT_C void DecreaseReferenceCount();

    private:
        /**
         * Destructor.
         */
        virtual ~CVcxConnectionUtility();
        
        /**
         * constructor.
         *
         */
        CVcxConnectionUtility( );

        /**
         * Private 2nd phase construction.
         */
        void ConstructL();
        
        /**
         * From CActive, handles an active object’s request completion event
         */
        void RunL();

        /**
         * From CActive, implements cancellation of an outstanding request.
         * This function is called as part of the active object’s Cancel().
         */
        void DoCancel();  
                 
    public: // New functions
       
        
        /**
        * Returns open IAP, if connection is not opened it is created
        *
        * @param aIapId     On return, IAP ID.
        * @param aSilent    If ETrue, tries to open connection silently (without dialogs)
        *                   In the 'Always ask' mode query dialog is always shown.
        *                    
        * @return KErrNone or one of the system wide error codes.
        */
        IMPORT_C TInt GetIap( TUint32& aIapId, TBool aSilent );

        /**
         * Gets WAP id from IAP id. Leaves with KErrNotFound if no record with given 
         * IAP id is found.
         * 
         * @param aIapId IAP id to match.
         * @return WAP id matching the given IAP id.
         */
        IMPORT_C TUint32 WapIdFromIapIdL( TUint32 aIapId );

        /**
        * Closes open connection.
        */
        IMPORT_C void DisconnectL();
        
        /**
         * Registers observer
         * 
         * @param MConnUtilEngineObserver
         */
        IMPORT_C void RegisterObserverL( MConnUtilEngineObserver* aObserver );
        
        /**
         * Removes observer from the array of observers
         * 
         * @param MConnUtilEngineObserver 
         */
        IMPORT_C void RemoveObserver( MConnUtilEngineObserver* aObserver );
           
        /**
         * Displays a wait note. Method calls notifier to show 
         * dialog and sets this active object active. If user cancels
         * dialog by pressing cancel, RunL is being called with KErrCancel.
         *   
         * @param aConnectionName name of connection to show on the dialog          
         */ 
        void DisplayWaitNote( const TDesC& aConnectionName = KNullDesC );
        
        /**
         * closes a wait note
         *           
         */
        void CloseWaitNote();

                                                                                
    private: // Data
        
        /**
         * Count of references to this object.
         */ 
        TInt iReferenceCount;
        
        /**
         * Utility implementation object
         */
        CVcxConnUtilImpl* iUtilImpl;
                        
        /**
         * Notifier used for showing connecting dialogs
         */
        RNotifier iNotifier; 
                                            
    };
#endif // __VCXNS_CONNUTIL_H_
// End of File