diff -r 000000000000 -r f0cf47e981f9 mmsharing/mmshengine/tsrc/ut_engine/inc/sipprofilealrcontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/sipprofilealrcontroller.h Thu Dec 17 08:44:37 2009 +0200 @@ -0,0 +1,129 @@ +/* +* 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: +* +*/ + +#ifndef CSIPPROFILEALRCONTROLLER_H +#define CSIPPROFILEALRCONTROLLER_H + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CSIPProfileRegistryBase; +class MSipProfileAlrObserver; + +// CLASS DECLARATION +/** +* @publishedAll +* @released +* +* This class provides functions to control +* ALR (Application Level Roaming) for SIP profiles that have +* a SNAP (Service Network Access Point) ID configured. +* By default the clients allow automatic roaming between +* IAPs (Internet Access Point) for a SIP profile. +* The clients wanting to control the roaming must instantiate this class. +* After that all the IAP availability events received through +* MSipProfileAlrObserver::AlrEvent must be allowed or disallowed. +* +* @lib sipprofilecli.lib +*/ +class CSipProfileAlrController : public CBase + { + public: // Data only in MuS Engine's unit testing stub + + TBool iAllowMigrationCalled; + TBool iDisallowMigrationCalled; + TUint32 iLastUsedIap; + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aRegistry a SIP profile registry instance. + * @param aObserver a observer for IAP migration events. + */ + IMPORT_C static CSipProfileAlrController* NewL( + CSIPProfileRegistryBase& aRegistry, + MSipProfileAlrObserver& aObserver ); + + /** + * Two-phased constructor. + * Constructs an object and adds the pointer to the cleanup stack. + * @param aRegistry a SIP profile registry instance. + * @param aObserver a observer for IAP migration events. + */ + IMPORT_C static CSipProfileAlrController* NewLC( + CSIPProfileRegistryBase& aRegistry, + MSipProfileAlrObserver& aObserver ); + + /** + * Destructor. + */ + ~CSipProfileAlrController(); + + public: // New functions + + /** + * Allows SIP Profile Agent to start the migration + * to a new IAP for the profile. + * If also all the other clients allow the migration, + * migration will be started and all the clients are informed + * with MSipProfileAlrObserver::AlrEvent(EMigrationStarted,...). + * When MSipProfileAlrObserver::AlrEvent(EMigrationCompleted,...) + * gets called the migration has been completed and + * the related SIP profile has been registered via the new IAP. + * @param aProfileId the SIP profile id + * @param aIapId the new IAP id. + */ + IMPORT_C void AllowMigrationL( TUint32 aProfileId, + TUint32 aIapId ); + + /** + * Disallows SIP Profile Agent to migrate + * to a new IAP for the profile. + * After the client calls this function all the clients are informed + * with MSipProfileAlrObserver::AlrError(...). + * @param aProfileId the SIP profile id + * @param aIapId the new IAP id. + */ + IMPORT_C void DisallowMigrationL( TUint32 aProfileId, + TUint32 aIapId ); + + /** + * Refreshes the list of available IAPs for + * the SNAP configured for the profile. + * If a new better IAP is available, it is offered via + * MSipProfileAlrObserver::AlrEvent(EIapAvailable,...). + * This function should be called if migration + * to a IAP has been previously disallowed and the client wants to + * check whether the better IAP is still available. + * @param aProfileId the SIP profile id + */ + IMPORT_C void RefreshIapAvailabilityL( TUint32 aProfileId ); + + + private: // Constructors: + + CSipProfileAlrController( CSIPProfileRegistryBase& aRegistry ); + void ConstructL( MSipProfileAlrObserver& aObserver ); + + private: // Data + + CSIPProfileRegistryBase& iRegistry; + }; + +#endif // CSIPPROFILEALRCONTROLLER_H