diff -r dd3853b8dc3f -r 1e1cc61f56c3 realtimenetprots/sipfw/ProfileAgent/ApnManager/inc/sipapnconfigurationhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/ProfileAgent/ApnManager/inc/sipapnconfigurationhandler.h Fri Mar 12 15:44:11 2010 +0200 @@ -0,0 +1,198 @@ +// Copyright (c) 2007-2009 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: +// Name : sipapnconfigurationhandler.h +// Part of : SIP Profile Server +// implementation +// Version : 1.0 +// + +#ifndef __CSIPAPNCONFIGURATIONHANDLER_H__ +#define __CSIPAPNCONFIGURATIONHANDLER_H__ + +// INCLUDES +#include +#include +#include +#include "sipapnmanager.h" + +// CONSTANTS +const TInt KSecondaryApnMaxRetryCount = 100; + +// FORWARD DECLARATIONS +class CCommsDatabase; +namespace CommsDat + { + class CCDRecordBase; + } + +// CLASS DEFINITION sipapnconfigurationhandler.h +/** + * + */ +class CSIPApnConfigurationHandler : public CActive + { + public: // Constructors and destructor + + enum TSipApnMonitoringState + { + EMonitoringIdle, + EMonitoringConnection, + EMonitoringDatabase + }; + + /** + * Static constructor. + * + * @return An initialized instance of this class. + */ + static CSIPApnConfigurationHandler* NewL( MSIPApnChangeObserver& aObserver, + TUint32 aIapId); + + /** + * Static constructor. + * + * @return An initialized instance of this class. + */ + static CSIPApnConfigurationHandler* NewLC( MSIPApnChangeObserver& aObserver, + TUint32 aIapId); + + /// Destructor + ~CSIPApnConfigurationHandler(); + + public: + + /** + * Change APN of specified IAP. If async change is allowed, change + * may be done later if it was not possible at the moment. Once apn + * is changed, observer is notified about change. + */ + void SetApnL( const TDesC8& aApn, + TBool aUseSecureAuthentication, + TBool aAllowAsync ); + + TBool IsPrimaryApnUsed(); + + TBool HasPendingTasks() const; + + TUint32 HandlerIapId() const; + + TBool IsFailed() const; + + void SetFailed(TBool aIsFailed, TBool aIsFatalFailure ); + + void UpdateApnL( TBool aIsPrimaryApn, const TDesC8& aApn ); + + protected: // From CActive + + void DoCancel(); + void RunL(); + TInt RunError( TInt aError ); + + private: + + TBool IsInUseL( TConnectionInfo& aConnectionInfo ); + + void StartMonitoringConnectionL( TConnectionInfo& aConnectionInfo ); + + void WatchConnectionStatusChange(); + + void WatchDatabaseStatusChangeL( TUint32 aIapId ); + + TBool ApnChangeNeededL( const TDesC8& aApn ); + + TBool ChangeApnIfNotInUseL( TBool aAllowAsync = ETrue ); + + TBool IssueApnChangeL( TUint32 aIapId, + const TDesC8& aApn, + TBool aUseSecureAuthentication, + TBool aAllowAsync = ETrue ); + + void ChangeApnL( const TDesC8& aApn, + TBool aUseSecureAuthentication ); + + TBool ClearProtectedRecord( CommsDat::CCDRecordBase& aRecord ); + + void SetMonitoringState( TSipApnMonitoringState aMonitoringState ); + + TSipApnMonitoringState MonitoringState() const; + + void ConnectionMonitoringCompletedL( TInt aError ); + + void DatabaseMonitoringCompletedL( TInt aError ); + + void SendApnChangedNotificationL( const TDesC8& aApn, TInt aError = KErrNone ); + + TDesC8& PrimaryApn(); + + TDesC8& SecondaryApn(); + + /** + * Reads the APN of specified IAP. + * @param aIapId IAP id + * @return APN or NULL if not found. Ownership is transferred. + */ + HBufC8* ReadCurrentApnL(); + + + private: // Constructors + + /// Constructor + CSIPApnConfigurationHandler( MSIPApnChangeObserver& aObserver, + TUint32 aIapId); + + /// 2nd phase constructor + void ConstructL(); + + private: // Data + + MSIPApnChangeObserver& iObserver; + + TSipApnMonitoringState iMonitoringState; + + RSocketServ iSocketSrv; + + RConnection iConnection; + + TPckgBuf iConnectionInfo; + + TNifProgressBuf iProgress; + + HBufC8* iApnProposal; + + TUint32 iIapId; + + CCommsDatabase* iCommsDatabase; + + TInt iMonitoringRetryCount; + + HBufC8* iCurrentApn; + + TBool iApnUseSecureAuthProposal; + + TBool iIsFailed; + + TBool iIsFatalFailure; + + HBufC8* iPrimaryApn; + HBufC8* iSecondaryApn; + +#ifdef CPPUNIT_TEST + friend class CSIPApnManagerTest; + friend class CSIPApnManager; +#endif + + }; + +#endif // __CSIPAPNCONFIGURATIONHANDLER_H__ +