bearermanagement/S60MCPR/inc/s60mpmpolicyinterfaces.h
changeset 0 5a93021fdf25
child 41 bbb64eb3bdee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bearermanagement/S60MCPR/inc/s60mpmpolicyinterfaces.h	Thu Dec 17 08:55:21 2009 +0200
@@ -0,0 +1,149 @@
+/*
+* Copyright (c) 2008-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: This header defines inteface needed by MCPR to use MPM.
+*
+*/
+
+/**
+@file s60mpmpolicyinterfaces.h
+This header defines inteface needed by MCPR to use MPM.
+*/
+#ifndef S60MPMPOLICYINTERFACES_H
+#define S60MPMPOLICYINTERFACES_H
+
+// Reusing MPM function code definitions
+#include <rmpm.h>
+
+// FORWARD DECLARATIONS
+class PolicyRequest;
+class CMPMPolicyRequests;
+
+/**
+ * Notication interface of S60MCPR
+ */
+class MMPMPolicyNotificationUser
+    {
+    public:
+        /**
+        * Notification
+        * 
+        * @param aNotification notification buffer from MPM.
+        */
+        virtual void PolicyNotification( TMpmNotification& aNotification ) = 0;
+    };
+
+/**
+ *  Callback class.
+ *
+ *  @since xx
+ */
+class MMPMPolicyRequestsUser
+    {
+    friend class PolicyRequest;
+public:
+    virtual void PolicyResponse( PolicyRequest& aCompletedRequest ) = 0;
+protected:
+    virtual void Delete() = 0;
+    };
+
+/**
+ * Lists the supported MPM operations of the MPM API wrapper
+ * In order to simplify cancellation, match the cancellable requests to MPM's AsyncRequests. 
+ */
+namespace S60MCPRMPMOperations
+    {
+    enum TPolicyServerOperations
+        {
+        EPolicyRequestChooseBestIAP = EMPMChooseBestIAP,
+        EPolicyRequestReselectBestIAP = EMPMReselectBestIAP,
+        EPolicyRequestProcessError = EMPMProcessError,
+        EPolicyRequestWaitNotification = EMPMWaitNotification,
+        EPolicyRequestIAPConnectionStarted = 200,
+        EPolicyRequestIAPConnectionStopped,
+        EPolicyRequestApplicationJoinsConnection,
+        EPolicyRequestApplicationLeavesConnection,
+        EPolicyRequestApplicationConnectionEnds,
+        EPolicyRequestConnect,
+        EPolicyRequestRegisterPrefIAPNotif,
+        EPolicyRequestUnregisterPrefIAPNotif,
+        EPolicyRequestApplicationMigratesToCarrier,
+        EPolicyRequestApplicationIgnoredTheCarrier,
+        EPolicyRequestApplicationAcceptedTheCarrier,
+        EPolicyRequestApplicationRejectedTheCarrier,
+        };
+    }
+
+/**
+ *  Request container class.
+ */
+class PolicyRequest
+    {
+    public:
+        /**
+         * c++ constructor 
+         */
+        PolicyRequest()
+            :   iConnPref(NULL),
+                iIapId(0),
+                iConnId(0),
+                iAppUid(KNullUid),
+                iError(KErrNone),
+                iPolicyPref(NULL),
+                iStatus(KErrNone),
+                iUser(NULL)
+            {}
+
+        /**
+         * Deletes heap data. 
+         */
+        void Cleanup()
+            {
+            delete iConnPref;
+            delete iPolicyPref;
+            // below is type specific destructor of iUser that handles the cleanup of derived object
+            if( iUser )
+                iUser->Delete(); 
+            }
+        
+        /**
+         * Does not actually cancel MPM request but prevents
+         * PolicyResponse() -calls to request originator. 
+         */
+        void Cancel()
+            {
+            if( iUser )
+                iUser->Delete();
+            iUser = NULL;
+            }
+
+    public:
+        // Information for MPM  
+        S60MCPRMPMOperations::TPolicyServerOperations iRequestType;
+        TConnPref*              iConnPref;
+        TUint                   iIapId;
+        TConnectionId           iConnId;
+        TUid                    iAppUid;
+        TInt                    iError;
+        // Information from MPM
+        TConnPref*              iPolicyPref;
+        TBMNeededAction         iNeededAction;
+        TInt                    iStatus;
+        // Interface back to requestor.
+        MMPMPolicyRequestsUser* iUser;
+    };
+
+#endif  // S60MPMPOLICYINTERFACES_H
+
+// End of File
+