natplugins/natpcliprovisioningnatfwadapter/inc/natfwtraversaladapter.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/natplugins/natpcliprovisioningnatfwadapter/inc/natfwtraversaladapter.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2006 - 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:  Main implementation of NAT/FW Traversal adapter
+*
+*/
+
+
+#ifndef CNATFWTRAVERSALADAPTER_H
+#define CNATFWTRAVERSALADAPTER_H
+
+// INCLUDES
+#include <CWPAdapter.h>
+#include <MWPContextExtension.h>
+
+// FORWARD DECLARATIONS
+class CWPCharacteristic;
+class CNATFWDomainSpecificItem;
+class CNATFWIAPSpecificItem;
+class CWPNATFWItem;
+class CWPStunServerItem;
+class CWPTurnServerItem;
+
+/**
+* Main implementation of NAT/FW Traversal adapter
+* @since S60 v3.1
+*/
+class CNATFWTraversalAdapter :  public CWPAdapter, public MWPContextExtension
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * Two-phased constructor.
+         */
+        static CNATFWTraversalAdapter* NewL();
+        
+        /**
+         * Destructor.
+         */
+        virtual ~CNATFWTraversalAdapter();
+
+    public: // Methods from base classes 
+  
+        /**
+         * From CWPAdapter
+         * @since Series60 3.1.
+         * Returns the number of the summary lines to be shown in 
+         * BIO control.
+         * @return Quantity of items (NAT/FW settings items).
+         */
+        TInt  ItemCount() const;
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Getter for the summary text of the NAT/FW item (NAT/FW settings) 
+         * located in the array. Text is shown to the user in 
+         * opened configuration message.
+         * @param aIndex. Location of the NAT/FW item.
+         * @return Summary title.
+         */
+        const TDesC16& SummaryTitle( TInt aIndex ) const;
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Getter for the summary text of the NAT/FW item 
+         * located in the array. Text is shown to the user in 
+         * opened configuration message.
+         * @param aIndex. Location of the NAT/FW item.
+         * @return Summary text.
+         */
+        const TDesC16& SummaryText( TInt aIndex ) const;
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Saves NAT/FW item (NAT/FW settings) located in array.
+         * @param aIndex. Location of the NAT/FW item to be saved.
+         */
+        void SaveL( TInt aIndex );
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Query if the NAT/FW item on place pointed by parameter can 
+         * be set as default.
+         * @param aIndex. Location of the NAT/FW item to be queried.
+         * @return TBool.
+         */
+        TBool CanSetAsDefault( TInt aIndex ) const;
+    
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Sets the NAT/FW item on place pointed by parameter as default.
+         * @param aIndex. Location of the NAT/FW item to be queried.
+         */
+        void SetAsDefaultL( TInt aIndex );
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Query for the detail information about the NAT/FW settings. 
+         * MWPPairVisitor is used for retrieving the details of a single 
+         * setting entry. This is not supported feature as in the other 
+         * adapters in the framework.
+         * @param aItem.
+         * @param aVisitor.
+         * @return TInt. 
+         */
+        TInt DetailsL( TInt aItem, MWPPairVisitor& aVisitor );
+
+        /**
+         * From MWPVisitor
+         * @since S60 v3.1.
+         * Visit method. Visits the adapter. Adapter then checks from the 
+         * aCharacteristic if the data is targetet to it and acts according to 
+         * that.
+         * @param aCharacteristic.
+         */
+        void VisitL( CWPCharacteristic& aCharacteristic );		
+
+        /**
+         * From MWPVisitor
+         * @since S60 v3.1.
+         * Visit method. Visits the adapter. Method set the iAppId value.
+         * @param aParameter.
+         */
+        void VisitL( CWPParameter& aParameter );		
+
+        /**
+         * From MWPVisitor
+         * @since S60 v3.1.
+         * Visit method. Visits the adapter. Adapter checks from the 
+         * aParameter if the link is targetet to it and acts according to 
+         * that. IAP bound to the NAT/FW access point specific settings is 
+         * handled with help of this method.
+         * @param aParameter.
+         */
+        void VisitLinkL( CWPCharacteristic& aLink );
+            
+        /**
+         * From CWPAdapter
+         * Informs the adapters of the saved settings.
+         * @since S60 v3.1.
+         * @param aAppIdOfSavingItem. UID of the adapter component. 
+         * @param aAppRef. APPREF of the saved settings.
+         * @param aStorageIdValue. Value that identifies the settings in 
+         *        its storage.
+         * @param aIsLastOfItsType. If the settings saved is the last of 
+         *        its kind, the value of the parameter is ETrue (or 1, because 
+         *        the TBool type does not work correctly via interface class 
+         *        definition (based on information from MVC documentation).
+         */
+        void SettingsSavedL ( const TDesC8& aAppIdOfSavingItem,
+            const TDesC8& aAppRef, const TDesC8& aStorageIdValue );
+
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Lets the adapters know when the saving has been finalized in 
+         * viewpoint of the provisioning framework. The adapters can make 
+         * finalization of saving the settings after receiving this call.
+         */
+        void SavingFinalizedL();
+        
+        /**
+         * From CWPAdapter
+         * @since S60 v3.1.
+         * Gets the saving information from the adapter that has saved settings.
+         * @param aIndex. Index of the previously saved item.
+         * @param aSavingInfo.
+         * @param aIsLastOfItsType. Adapter can tell to the framework if 
+         * the saved item was the last one of its type.
+         */
+        void GetSavingInfoL( TInt aIndex, RPointerArray<HBufC8> &aSavingInfo );
+
+        /**
+         * From MWPContextExtension.
+         * Returns a pointer to a context extension.
+         * @param aExtension Contains a pointer to MWPContextExtension if supported
+         * @return KErrNotSupported if not supported, KErrNone otherwise
+         */
+        TInt ContextExtension( MWPContextExtension*& aExtension );
+
+        /**
+         * From MWPContextExtension.
+         * Returns the data used for saving.
+         * @param aIndex The index of the data
+         * @return The data. Ownership is transferred.
+         */
+        const TDesC8& SaveDataL( TInt aIndex ) const;
+
+        /**
+         * From CWPAdapter
+         * Deletes a saved item.
+         * @since S60 v3.1.
+         * @param aSaveData The data used for saving
+         */
+        void DeleteL( const TDesC8& aSaveData );
+
+        /**
+         * Returns the UID of the adapter.
+         * @return UID
+         */
+        TUint32 Uid() const;
+        
+        /**
+         * Converts descriptor to TInt.
+         * @param aDes Value to be converted.
+         * @return Converted value.
+         */
+        TInt DesToInt( const TDesC8& aDes );
+        
+        /**
+         * Converts descriptor to TUint
+         * @param aDes Value to be converted.
+         * @return Converted value.
+         */
+        TUint DesToTUint( const TDesC8& aDes );
+       
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CNATFWTraversalAdapter();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        /**
+         * Gets IAP ID according to WAP ID.
+         * @since S60 3.2
+         * @param aWapId WAP ID of access point.
+         * @return IAP ID of access point
+         */
+        TUint32 IapIdFromWapIdL( TUint32 aWapId );
+
+    private: // Data
+    
+        /**
+         * Current NATFW domain specific data. Ownership is transferred to
+         * CWPNATFWItem.
+         * Not own.
+         */ 
+        CNATFWDomainSpecificItem* iCurrentDomainItem;
+        
+        /**
+         * Current NATFW iap specific data. Ownership is transferred to 
+         * CWPNATFWItem.
+         * Not own.
+         */
+        CNATFWIAPSpecificItem* iCurrentIapItem;
+        
+        /**
+         * Current NATFW item setting data.
+         * Own.
+         */
+        CWPNATFWItem* iCurrentNATFWItem;
+        
+        /**
+         * The application id of the current characteristic. 
+         * Not own.
+         */
+        TPtrC iAppID;
+ 
+	    /**
+         * Default name for NAT/FW settings. Value is read from the resource file.
+         * Own.
+         */
+        HBufC* iDefaultName;
+
+        /**
+         * Title for NAT/FW settings. Value is read from the resource file.
+         * Own.
+         */
+        HBufC* iTitle;
+
+        /**
+         * Holds the received NAT/FW item data.
+         * Own.
+         */
+        RPointerArray<CWPNATFWItem> iDatas;
+
+        /**
+         * For telling whether it is OK to set NW parameters.
+         */
+        TBool iCharacteristicNw;
+
+        /**
+         * For telling whether it is OK to set ICE parameters.
+         */
+        TBool iCharacteristicIce;
+
+        /**
+         * For telling whether it is OK to set TURN parameters.
+         */
+        TBool iCharacteristicTurn;
+
+        /**
+         * For telling whether it is OK to set NATIAP parameters.
+         */
+        TBool iCharacteristicNatIap;
+
+        /**
+         * For telling whether it is OK to set TURNSERVER parameters.
+         */
+        TBool iCharacteristicTurnServer;
+
+        /**
+         * For telling whether it is OK to set ADDITIONALSTUN parameters.
+         */
+        TBool iCharacteristicAdditionalStun;
+
+        /**
+         * Current STUN server item. Ownership is transferred to 
+         * CWPNATFWDomainSpecificItem.
+         * Not own.
+         */
+        CWPStunServerItem* iCurrentStunServer;
+
+        /**
+         * Current TURN server item. Ownership is transferred to 
+         * CWPNATFWDomainSpecificItem.
+         * Not own.
+         */
+        CWPTurnServerItem* iCurrentTurnServer;
+
+        /**
+         * For EUnit testing. Uncomment when running tests.
+         */
+        //friend class T_NATFWTraversalAdapter;
+    };
+
+#endif      // CNATFWTRAVERSALADAPTER_H
+            
+// End of File