bearermanagement/mpm/inc/mpmserversession.h
changeset 0 5a93021fdf25
child 17 c14618f9de99
child 20 9c97ad6591ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/mpm/inc/mpmserversession.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,968 @@
+/*
+* Copyright (c) 2004-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: MPM server session class definitions
+*
+*/
+
+/**
+@file mpmserversession.h
+Mobility Policy Manager server session class definitions.
+*/
+
+#ifndef MPMSERVERSESSION_H
+#define MPMSERVERSESSION_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <commdbconnpref.h> // for TCommDbConnPref
+#include <connpref.h>       // for TConnPref
+#include <rconnmon.h>       // for TConnMonIapInfo
+#include <ConnectionUiUtilities.h> //TMsgQueryLinkedResults
+#include "rmpm.h"
+#include "mpmserver.h"
+
+// CONSTANTS
+const TUint32 KLowestPriority       = 2147483647; // 0x7FFFFFFF
+const TInt    KFirstArgument        = 0;
+const TInt    KSecondArgument       = 1;
+const TInt    KThirdArgument        = 2;
+const TInt    KFourthArgument       = 3;
+const TInt    KShift8               = 8;
+const TInt    KSmaller              = -1;
+const TInt    KEqual                = 0;
+const TInt    KBigger               = 1;
+const TUint32 KUidAlwaysOnlineStarter  = 0x101F85EE;
+const TUint32 KUidSimApplicationToolkit  = 0x1000A833;
+const TUint32 KUidBrowser           = 0x10008D39;
+const TUint32 KUidDVBH  = 0x10208413;
+const TUint32 KSortUncategorisedIaps  = 0;
+const TUint   KMPMNrWlansOne        = 1;
+const TUint   KMPMNrWlansTwo        = 2;
+const TInt    KMaxGetIntSettingLength = KCommsDbSvrMaxColumnNameLength * 2;
+_LIT( KIapProxyServiceSetting, "IAP\\IAPService" );
+
+// FORWARD DECLARATIONS
+class CMPMDisconnectDlg;
+class CMPMConfirmDlgRoaming;
+class CMPMCommsDatAccess;
+class CMPMIapSelection;
+
+// CLASS DECLARATION
+/**
+*  TNetIap
+*  Record for commdb IAP table search storage
+*  @lib MPMServer.exe
+*  @since 3.0
+*/
+class TNetIap
+    { 
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        */
+        TNetIap();
+
+    public: // New methods
+
+        /**
+        * Ordering method of class objects.
+        * @since 3.2
+        * @param aFirst First object for comparison
+        * @param aSecond Second object for comparison
+        * @return -1 if aFirst.iRanking >  aSecond.iRanking
+        *          1 if aFirst.iRanking <  aSecond.iRanking
+        *          0 if aFirst.iRanking == aSecond.iRanking
+        */
+        static TInt CompareRanking(const TNetIap& aFirst, const TNetIap& aSecond);
+
+
+        /**
+        * Ordering method of class objects. Compares iGlobalPriority and if those values 
+        * are equal return value is determined based on iRanking by CompareRanking function.
+        * @since 3.2
+        * @param aFirst First object for comparison
+        * @param aSecond Second object for comparison
+        * @return -1 if aFirst is higher
+        *          1 if aFirst is lower
+        *          0 if argument objects are equal
+        */
+        static TInt CompareGlobalAndLocalPriority(const TNetIap& aFirst, const TNetIap& aSecond);
+
+    public: // Data
+        // SNAP
+        TUint32 iSnap;
+        
+        // Embedded SNAP
+        TUint32 iEmbeddedSnap;
+        
+        // IAP Id
+        TUint32 iIapId;
+
+        // Priority
+        TUint32 iRanking;
+
+        // Global bearer priority
+        TUint32 iGlobalPriority;
+    };
+
+/**
+* Stores data of whether Preferred IAP Notifications may 
+* be sent immediately and stores IAP information for later handling.
+* 
+* @lib MPMServer.exe
+* @since 3.2
+*/
+class TStoredIapInfo
+    {
+    public:
+        /**
+        * Constructor.
+        */
+        TStoredIapInfo();
+        
+        /**
+        * Checks if Preferred IAP notification can 
+        * be sent immediately or not
+        *
+        * @return ETrue if preferred IAP notification 
+        * can't be sent immediately
+        */
+        TBool HoldPrefIapNotif() const;
+
+        /**
+        * Sets iHoldPrefIapNotif to true, so that notifications 
+        * won't be sent.
+        *
+        */
+        void SetHoldPrefIapNotif();
+
+        /**
+        * Checks if there is stored IAP info to be handled.
+        * Sets iHoldPrefIapNotif to false so notifications can be sent. 
+        *
+        * @param aStoredIapInfo If stored IAP info exists it is 
+        * written to this argument.
+        * @return ETrue if IAP info to be handled exists
+        */
+        TBool HandleIapInfoWaiting( TConnMonIapInfo& aStoredIapInfo );
+
+        /**
+        * Sets iStoredIapInfo 
+        *
+        * @param aStoredIapInfo IAP info to be stored
+        */
+        void SetStoredIapInfo( const TConnMonIapInfo& aStoredIapInfo );
+
+        /**
+        * Clears data so that Pref IAP notifs can be sent 
+        * and no IAP info is stored.
+        *
+        */
+        void ResetStoredIapInfo();
+
+    private:
+    
+        // True if Preferred IAP Notifications 
+	    // should be stored for later handling
+	    TBool iHoldPrefIapNotif;
+	    
+	    // True if there is an IAP info waiting 
+	    // for handling
+	    TBool iIapInfoWaiting;
+	    
+	    // Stored IAP info
+	    TConnMonIapInfo iStoredIapInfo;
+    };
+
+// States for migrating
+//
+enum TMigrateToCarrierState
+    {
+    EMigrateNone,
+    EMigrateUserConfirmation,
+    EMigrateOfflineConfirmation
+    };
+    
+// CLASS DECLARATION
+/**
+*  Mobility Policy Manager server session.
+*  An instance of class CMPMServerSession is created for each client
+*  @lib MPMServer.exe
+*  @since 3.0
+*/
+class CMPMServerSession : public CSession2
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CMPMServerSession* NewL(CMPMServer& aServer);
+
+        /**
+        * Destructor.
+        */
+        virtual ~CMPMServerSession();
+
+    public: // New methods
+
+        /**
+        * Sets iDisconnectDlg pointer to NULL.
+        * @since 3.1
+        */
+        inline void SetDisconnectDlgPtrNull();
+
+        /**
+        * Sets iConfirmDlgRoaming pointer to NULL.
+        * @since 3.2
+        */
+        inline void SetConfirmDlgRoamingPtrNull();
+
+        /**
+        * Gets the value of iMyServer.
+        * @since 3.1
+        * @return Value of iMyServer
+        */
+        inline CMPMServer& MyServer();
+
+        /**
+        * Returns iIapSelection.
+        *
+        * @since 3.2
+        * @return Value of iIapSelection
+        */
+        CMPMIapSelection* IapSelectionL();
+
+        /**
+        * Gets the value of iConnId.
+        * @since 3.1
+        * @return Value of iConnId
+        */
+        inline TConnectionId ConnectionId() const;
+
+        /**
+        * Checks the need for preferred IAP notification.
+        * @since 3.1
+        * @param aIapInfo Info about available IAPs
+        * @param aCaller Info about component which initiated this call
+        */
+        void PrefIAPNotificationL( const TConnMonIapInfo&    aIapInfo,
+                                   const TPrefIAPNotifCaller aCaller );
+
+        /**
+        * Starts sending preferred IAP notification.
+        * @since 3.2
+        * @param aIapId IAP Id 
+        */
+        void StartIAPNotificationL( const TUint32 aIapId );
+
+        /**
+        * Sends Stop IAP notification.
+        * @param aIapId IAP Id 
+        */
+        void StopIAPNotificationL( TInt aIapId = 0 );
+
+        /**
+        * Sends mobility error notification.
+        * @since 5.2
+        * @param aError Error code
+        */
+        void MobilityErrorNotificationL( TInt aError );
+        
+        /**
+        * Sends client error notification.
+        * @since 5.2
+        * @param aError Error code
+        */
+        void ClientErrorNotificationL( TInt aError );
+
+        /**
+        * Checks if phone is in offline mode or not.
+        * @since 3.1
+        * @return ETrue if phone is in offline mode, otherwise EFalse.
+        */
+        TBool IsPhoneOfflineL() const;
+
+        /**
+        * Returns the list of available IAPs, where the blacklisted IAPs 
+        * have already been removed.
+        * @since 3.2
+        * @param aAvailableIAPs List of IAPs 
+        * @param aConnId Connection Id
+        */
+        void AvailableUnblacklistedIapsL( RAvailableIAPList&  aAvailableIAPs,
+                                          const TConnectionId aConnId );
+
+        /**
+        * Completing sorting request.
+        * @since 3.2
+        */
+        void CompleteServerSortSNAP();
+
+        /**
+        * Completing process error call after WLAN scan.
+        * @since 3.2
+        */
+        void ProcessErrorWlanScanCompletedL();
+
+        /**
+        * Sort Snap functionality
+        *
+        * @since 3.2
+        * @param aSnapId Snap to be sorted
+        * @param aSortedIaps Buffer which will be set to 
+        * contain the sorted iaps
+        */
+        void SortSnapL( const TUint32   aSnapId, 
+                        TMpmSnapBuffer& aSortedIaps );
+
+        /**
+        * If session is displaying connection selection dialog
+        * updated contents for it are written to publish& subscribe API.
+        *
+        * @since 3.2
+        */
+        void UpdateConnectionDialogL();
+
+        /**
+        * Returns a reference to iStoredIapInfo. 
+        *
+        * @since 3.2
+        * @return Reference to iStoredIapInfo
+        */        
+        inline TStoredIapInfo& StoredIapInfo();
+
+        /**
+        * Completes carrier rejected request. Attempts to select
+        * new IAP to use and if successful sends a preferred iap
+        * notification. If not successful, sends error notification. 
+        *
+        * @since 3.2
+        */        
+        void CompleteCarrierRejected();
+
+        /**
+        * Handling of whether it is required to display 
+        * a confirmation dialog or not.
+        * @since 3.2
+        * @param aIapId IAP Id of the connection.
+        */
+        TBool IsConfirmFirstL( const TUint32 aIapId );
+
+        /**
+        * Completing choose iap request. Status and resulting
+        * preferences (if preferences exist) are passed back to client.
+        * @since 3.2
+        * @param aError Message status
+        * @param aPolicyPref Policy preference to be returned, NULL if no 
+        * preference should be passed
+        */
+        void ChooseIapComplete( TInt                aError,
+                                const TMpmConnPref* aPolicyPref );
+
+        /**
+        * Completing process error request. Error value and needed action
+        * are passed back to client.
+        * @since 3.2
+        * @param aError Message status
+        * @param aErrorReturned Error value to be returned, NULL if no 
+        * value should be passed
+        * @param aNeededAction Needed action to be returned, NULL if no 
+        * value should be passed
+        */
+        void ProcessErrorComplete( TInt             aError, 
+                                   TInt*            aErrorReturned,
+                                   TBMNeededAction* aNeededAction );
+
+        /**
+        * Callback for handling migrate state transitions.
+        *
+        * @param aError Error code
+        */
+        void MigrateCallbackL( TInt aError );
+
+        /**
+        * Callback for roaming user confirmation.
+        *
+        * @param aError Error code
+        * @param aResponse User response
+        * @param aReconnect True if confirmation was a reconnect dialog
+        */
+        void RoamingConfirmationCompletedL( TInt aError, TMsgQueryLinkedResults aResponse, TBool aReconnect );
+        
+        /**
+         * Set user connection flag
+         * @since 5.1
+         */
+        inline void SetUserConnection();
+        
+        /**
+         * Set when this session has user connection flag set
+         * @since 5.1
+         * @return ETrue if user connection is active in this session.
+         */
+        inline TBool UserConnection() const;
+        
+        /**
+         * Clear user connection flag
+         * @since 5.1
+         */        
+        inline void ClearUserConnection();
+
+        /**
+         * Use user connection preferences
+         * @since 5.1
+         */
+        TBool UseUserConnPref();
+        
+        /**
+        * Returns id of the client.
+        *
+        * @since 5.0
+        * @return Id of the client
+        */
+        inline TUint32 AppUid() const;
+
+        /**
+        * To determine whether choose best iap is called for this ession..
+        *
+        * @since 5.2
+        * @return True is choose best iap is called for this session
+        */
+        inline TBool ChooseBestIapCalled() const;
+
+#ifdef _DEBUG
+        /**
+         * Forces MPM to send StopIAPNotification in DEBUG MODE only
+         */
+        void HandleDebugGenerateStopIAPNotification( const RMessage2& aMessage );
+        /**
+         * Forces MPM to filter connmon events
+         */
+        void HandleDebugFilterConnMonEvents( const RMessage2& aMessage, const TBool aVal );       
+        /**
+         * Forces MPM to shutdown
+         */
+        void HandleDebugShutdown( const RMessage2& aMessage, const TBool aVal );
+#endif //_DEBUG
+
+        /**
+         * Stops connection
+         */                
+        TInt StopConnection();
+        
+        /**
+        * Returns true if preferred iap notification is requested.
+        *
+        * @since 5.2
+        * @return Ture or false depending on state.
+        */
+        inline TBool PreferredIapRequested() const;
+        
+        /**
+        * To determine whether only WLAN is allowed in current network
+        *
+        * @since 5.2
+        * @param aNewWlansAllowed ETrue if new WLANs can be prompted to the user by MPM
+        * @return ETrue if only WLAN is allowed 
+        */
+        TBool IsWlanOnlyL( TBool& aNewWlansAllowed );
+        
+        /**
+        * Returns custom preference's forced roaming value
+        * @since 5.2
+        * @return forced roaming state
+        */
+        TBool ForcedRoaming();
+
+        /**
+         * Get available iaps
+         * @since 5.2
+         * @return Returns list of available iaps.
+         */
+        TConnMonIapInfo GetAvailableIAPs();
+
+        /**
+         * Is bearer accepted
+         * @since 5.2
+         * @param aBearerType Bearer type to be checked (WLAN or packet data)
+         * @return Returns true if given bearer is accepted by this session.
+         */
+        TBool IsBearerAccepted( TMPMBearerType aBearerType );
+        
+        /**
+        * To determine whether IAP is used for MMS
+        *
+        * @since 5.2
+        * @param aIap Iap to be checked
+        * @return ETrue if Iap is used for MMS 
+        */
+        TBool IsMMSIap( TUint32 aIap );
+        
+    public: // Functions from base classes
+
+        /**
+        * From CSession2. Service dispathcer.
+        * @since 3.0
+        * @param aMessage Message from the client
+        */
+        void ServiceL(const RMessage2& aMessage);
+
+        /**
+        * From CSession2. Service error handling.
+        * @since 3.2
+        * @param aMessage Message from the client
+        * @param aError Error code
+        */
+        void ServiceError(const RMessage2& aMessage, TInt aError);
+
+    private: // Constructors
+
+        /**
+        * C++ default constructor.
+        */
+        CMPMServerSession(CMPMServer& aServer);
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL() ;
+
+    private: // New methods
+
+        /**
+        * Handling of IAP selection.
+        * @since 3.0
+        * @param aMessage message from client
+        */
+        void HandleServerChooseIapL(const RMessage2& aMessage);
+
+        /**
+        * Handling of request canceling.
+        * @since 3.0
+        * @param aMessage message from client
+        */
+        void HandleServerCancelRequest(const RMessage2& aMessage);
+
+        /**
+        * Handling of BM application specific connection addition.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationJoinsConnection( 
+                const RMessage2& aMessage);
+
+        /**
+        * Handling of BM application specific connection removal.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationLeavesConnection(
+                const RMessage2& aMessage);
+
+        /**
+        * Handling of total BM IAP connection addition.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerIapConnectionActivatedL(const RMessage2& aMessage);
+
+        /**
+        * Handling of total BM IAP connection addition.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerIapConnectionStartedL(const RMessage2& aMessage);
+
+        /**
+        * Handling of total BM IAP connection removal.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerIapConnectionStopped( const RMessage2& aMessage );
+
+        /**
+        * Handling of application connection ending.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationConnectionEnds(
+                                            const RMessage2& aMessage );
+        /**
+        * Handling of error processing.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerProcessErrorL(const RMessage2& aMessage);
+
+        /**
+        * Handling of prefered IAP notification registration.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerRegisterPrefIAPNotifL(const RMessage2& aMessage);
+
+        /**
+        * Handling of preferred IAP notification unregistration.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerUnregisterPrefIAPNotif(const RMessage2& aMessage);
+
+        /**
+        * Handling of notification request.
+        * @since 3.1
+        * @param aMessage message from client
+        */
+        void HandleServerWaitNotificationL(const RMessage2& aMessage);
+
+        /**
+        * Handling of sorting request.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerSortSNAPL(const RMessage2& aMessage);
+
+        /**
+        * Handling of application migrating to carrier.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationMigratesToCarrierL(
+                                                const RMessage2& aMessage);
+
+        /**
+        * Handling of application ignoring the carrier.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationIgnoredTheCarrier(
+                                                const RMessage2& aMessage);
+
+        /**
+        * Handling of application accepting the carrier.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationAcceptedTheCarrier(
+                                                const RMessage2& aMessage);
+
+        /**
+        * Handling of application rejecting the carrier.
+        * @since 3.2
+        * @param aMessage message from client
+        */
+        void HandleServerApplicationRejectedTheCarrierL(
+                                                const RMessage2& aMessage);
+
+        /**
+        * Handling of ReselectBestIap call.
+        * @since 9.1
+        * @param aMessage message from client
+        */
+        void HandleServerReselectIapL( const RMessage2& aMessage);
+
+        /**
+        * Extracts connection preferences into format suitable for MPM
+        * and validates that connection preferences are valid.
+        * All different type of connection preferences are mapped and
+        * converted into TMpmConnPref.
+        * Only a a single TMpmConnPref is extracted from the given TConnPref.
+        * That is, only one connection attempt is tried and thus only the
+        * first preferences are taken if TCommDbMultiConnPref is provided.
+        * This function also sets connection type which MPM uses later to 
+        * select correct IAP in the requested manner.
+        * @since 3.0
+        * @param aBasePref Connection preferences to be extracted.
+        * @param aMpmConnPref Extracted connection preferences.
+        * @return KErrNone if successful, otherwise one of the
+        * system-wide error codes
+        */
+        TInt ExtractConnPref(
+            const TConnPref& aBasePref,
+            TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Extracts TCommDBConnPref connection preferences into format suitable
+        * for MPM and validates that connection preferences are valid.
+        * @since 3.0
+        * @param aBasePref TCommDBConnPref connection preferences.
+        * @param aMpmConnPref Extracted connection preferences.
+        * @return KErrNone if successful, otherwise KErrArgument.
+        */
+        TInt ExtractConnPrefCommDb(
+            const TConnPref& aBasePref,
+            TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Extracts TCommDbMultiConnPref connection preferences into format
+        * suitable for MPM and validates that connection preferences are
+        * valid.
+        * @since 3.0
+        * @param aBasePref TCommDbMultiConnPref connection preferences.
+        * @param aMpmConnPref Extracted connection preferences.
+        * @return KErrNone if successful, otherwise KErrArgument.
+        */
+        TInt ExtractConnPrefCommDbMulti(
+            const TConnPref& aBasePref,
+            TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Extracts TConnSnapPref connection preferences into format suitable
+        * for MPM and validates that connection preferences are valid.
+        * @since 3.0
+        * @param aBasePref TConnSnapPref connection preferences.
+        * @param aMpmConnPref Extracted connection preferences.
+        * @return KErrNone if successful, otherwise one of the
+        *         system-wide error codes.
+        */
+        TInt ExtractConnPrefSnap(
+            const TConnPref& aBasePref,
+            TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Extracts TMpmConnPref connection preferences into format suitable
+        * for MPM and validates that connection preferences are valid.
+        * It's obvious that aBasePref is already in right format.
+        * This function, however, fills in some of the extra field not
+        * existing in TExtendedConnPref and validates preferences.
+        * @since 5.2
+        * @param aBasePref TMpmConnPref connection preferences.
+        * @param aMpmConnPref MPM connection preferences.
+        * @param KErrNone in success, otherwise one of the
+        *         system-wide error codes.
+        */
+        TInt ExtractConnPrefMpm(
+            const TConnPref& aBasePref,
+            TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Validates extended connection preferences.
+        * Although the input for this function is TMpmConnPref,
+        * the purpose of this function is to verify TExtendedConnPref
+        * into which TMpmConnPref object's first fields match exactly.
+        * @since 5.2
+        * @param aMpmConnPref Custom preferences to be validated.
+        * @return KErrNone if extended connection preferences are valid.
+        *         Otherwise KErrArgument.
+        */
+        TInt ValidateExtendedConnPref( TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Resolves connection type based on the other attributes
+        * in MPM connection preferences.
+        * @since 3.0
+        * @param aMpmConnPref Extracted connection preferences.
+        */
+        void ResolveConnType( TMpmConnPref& aMpmConnPref ) const;
+
+        /**
+        * Resolves original Service Id.
+        * @since 5.2
+        * @return The found service id. KErrNotFound if not ok.
+        */
+        TInt GetServiceIdSettingL();
+
+        /**
+        * Returns the list of available IAPs, where the blacklisted IAPs 
+        * have already been removed.
+        * @since 3.2
+        * @param aAvailableIAPs List of IAPs 
+        * @param aIapInfo Info about available IAPs
+        * @param aConnId Connection Id
+        */
+        void AvailableUnblacklistedIapsL( RAvailableIAPList&        aAvailableIAPs,
+                                          const TConnMonIapInfo&    aIapInfo, 
+                                          const TConnectionId       aConnId );
+
+        /**
+        * Checks if the given Iap Id is an upgrade or downgrade.
+        * @since 3.2
+        * @param aIapId Given Iap Id 
+        * @param aMigrateIapId Iap Id where application is roaming 
+        * @param aAvailableIAPs List of IAPs 
+        * return ETrue if upgrade, otherwise EFalse.
+        */
+        TBool IsUpgrade( const TUint32            aIapId, 
+                         const TUint32            aMigrateIapId,
+                         const RAvailableIAPList& aAvailableIAPs ) const;
+
+        /**
+        * Checks if there is a need to send preferred IAP notification.
+        * @since 3.2
+        * @param aCurrentIap Current Iap Id of connection
+        * @param aLastNotifiedIap Last notified Iap Id
+        * @param aValidatedIap Iap validated by MPM for roaming
+        * @return ETrue if necessary, otherwise EFalse.
+        */
+        TBool CheckNotifNeed( const TUint32       aCurrentIap,
+                              const TUint32       aLastNotifiedIap,
+                              const TUint32       aValidatedIap );
+
+        /**
+        * Returns the list of unavailable IAPs.
+        * @since 3.2
+        * @param aAvailableIAPs Array of available IAPs
+        * @param aUnavailableIAPs Array of unavailable IAPs
+        */
+        void UnavailableIAPsL( const RAvailableIAPList aAvailableIAPs, 
+                               RAvailableIAPList&      aUnavailableIAPs );
+
+        /**
+        * Removes unavailable IAP Id.
+        * @since 3.2
+        * @param aIapInfo Info about available IAPs 
+        * @param aIapId IAP Id to be removed
+        */
+        void RemoveUnavailableIap( TConnMonIapInfo& aIapInfo, 
+                                   const TUint32    aIapId );
+
+        /**
+        * Determines whether the process uid belongs 
+        * to a background application.
+        * @since 3.2
+        * @param aUid Application Uid
+        */
+        TBool IsBackgroundApplication( TUint32 aUid ) const;
+
+        /**
+        * Checks if disconnect dialog should be displayed for this error
+        * @since 3.2
+        * @param aError Error code
+        */
+        TBool DisconnectDlgErrorCode( TInt aError ) const;
+        
+        /**
+        * Gets presumed Iap Id of this connection
+        *
+        * @since 3.2
+        * @return Presumed Iap Id
+        */
+        TUint32 GetPresumedIap();
+
+        /**
+        * Finshing migration. If no error, updates BM pref iap structure 
+        * and sends start iap notification.
+        *
+        * @param aError KErrNone if migration was succesful
+        */
+        void MigrateDoneL( TInt aError );
+        
+        /**
+        * Sends error notification.
+        * @since 5.2
+        * @param aNotificationType Type of the notification
+        * @param aError Error code
+        */
+        void ErrorNotificationL( TInt aError,
+                                 TMpmNotifications aNotificationType );
+        
+        /**
+         * Removes iaps not according to bearer set
+         * @since 5.2
+         * @param aAvailableIAPs List of available iaps.
+         */
+        void RemoveIapsAccordingToBearerSetL( TConnMonIapInfo& aAvailableIAPs );
+		
+        /**
+         * Checks whether preferences allow using WLAN connection
+         * @since 5.2
+         * @return ETrue if preferences allow WLAN otherwise EFalse
+         */
+        TBool PrefsAllowWlan();
+
+    private: // Data
+    
+        // Server class reference
+        CMPMServer& iMyServer;
+
+        // Pointer to the disconnect dialog active object
+        CMPMDisconnectDlg* iDisconnectDlg;
+
+        // Pointer to the roaming confirmation dialog active object
+        CMPMConfirmDlgRoaming* iConfirmDlgRoaming;
+
+        // Connection Id
+        TConnectionId iConnId;
+
+        // Flag for notification request activity
+        TBool iNotifRequested;
+        
+        // Flag for indicating mobility API support.
+        TBool iPreferredIAPRequested;
+
+        // Notification message
+        RMessage2 iNotifMessage;
+
+        // If offline feature is supported then this is ETrue
+        TBool iOfflineFeatureSupported;
+
+        // Iap Id of Easy WLAN
+        TUint32 iEasyWlanIap;
+
+        // Uid of the application
+        TUint32 iAppUid;
+
+        // Choose iap request message to be completed when 
+        // once MPM has received the asyncronous services from 
+        // other servers
+        // 
+        RMessage2 iChooseIapMessage;
+
+        // Process error request message to be completed when 
+        // MPM has received the asyncronous services from 
+        // other servers
+        //
+        // These messages are stored separately 
+        // 
+        RMessage2 iProcessErrorMessage;
+
+        // ServerSortSNAPL() request message to be completed  
+        // when MPM has received the asyncronous services 
+        // from other servers
+        //
+        RMessage2 iServerSortSNAPMessage;
+      
+        // Contains state info whether PrefIapnotifs can be sent 
+        // and saved IAP info structure.
+        //
+        TStoredIapInfo iStoredIapInfo;
+            
+        // Iap selection object
+        //    
+        CMPMIapSelection* iIapSelection;
+
+		// Stored state of migrating to carrier
+		// 
+		TMigrateToCarrierState iMigrateState;
+
+		// Last Iap notified using PreferredIap-notification
+		//
+		TUint32 iLastNotifiedIap;
+		
+		// Iap to which connection is migrating
+        //
+        TUint32 iMigrateIap;
+
+        // Set when this session is user connection
+		//
+        TBool iUserConnection;
+    };
+
+#include "mpmserversession.inl"
+    
+#endif // MPMSERVERSESSION_H
+
+// End of File