natfw/natfwsettings/inc/cnatfwsettingsimpl.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/natfw/natfwsettings/inc/cnatfwsettingsimpl.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,298 @@
+/*
+* 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:    Implementation class
+*
+*/
+
+
+
+
+#ifndef CNATSETTINGSIMPL_H
+#define CNATSETTINGSIMPL_H
+
+
+#include <e32base.h>
+
+#include <cnatfwsettingsapi.h>
+
+class CNATFWCenRepHandler;
+class CDesC8Array;
+class CNATFWIceSettings;
+class CNATFWStunSettings;
+class CNATFWTurnSettings;
+
+
+/**
+ * Implementation class for NAT FW Settings API.
+ *
+ * Class uses Central Repository to retrieve settings values.
+ *
+ * @lib natfwnatsettings.lib
+ * @since S60 3.2 
+ */
+class CNATFWNatSettingsImpl : public CBase
+    {
+
+public:
+
+    /**
+     * A two-phase constructor.
+     *
+     * In initial phase domain name and internet acces point related settings
+     * values are read from Central Repository.
+     *
+     * @since S60 3.2
+     * @param aDomain The STUN/TURN server domain name
+     * @return New object, ownership is transferred.
+     * @leave KErrCorrupt if more than one identical domain
+     *        names found at Central Repository
+     */
+    static CNATFWNatSettingsImpl* NewL( const TDesC8& aDomain );
+
+    /**
+     * A two-phase constructor.
+     * The instance is put to the cleanup stack.
+     *
+     * In initial phase domain name and internet acces point related settings
+     * values are read from Central Repository.
+     *
+     * @since S60 3.2
+     * @param aDomain The STUN/TURN server domain name
+     * @return New object, ownership is transferred.
+     * @leave KErrCorrupt if more than one identical domain
+     *        names found at Central repository
+     */
+     static CNATFWNatSettingsImpl* NewLC( const TDesC8& aDomain );
+
+    /**
+     * Desctructor
+     *
+     * @since S60 3.2
+     */
+    virtual ~CNATFWNatSettingsImpl();
+    
+    /**
+     * Fetch Internet acces point settings from Central Repository
+     * by specific IAP ID. Old settings are replaced if new found.
+     *
+     * @since S60 3.2
+     * @param aIapId internet acces point ID
+     * @leave KErrCorrupt if more than one identical IAP ID values
+     *        found at Central Repository or other system wide error code
+     */
+    void RetrieveIapSettingsL( TUint aIapId );
+
+    /**
+     * Returns Domain name.
+     *
+     * @since S60 3.2
+     * @return Domain name
+     */
+    const TDesC8& Domain() const;
+
+    /**
+     * Returns true if CRLF refresh is enabled.
+     *
+     * @since S60 3.2
+     * @return True if enabled
+     */
+    TBool CrlfRefreshEnabled() const;
+    
+    /**
+     * Returns true if shared secret is enabled.
+     *
+     * @since S60 3.2
+     * @return True if used
+     */
+    TBool UseSharedSecret() const;
+
+    /**
+     * Returns refresh interval for UDP.
+     *
+     * @since S60 3.2
+     * @return Refresh Interval for UDP
+     */
+    TInt RefreshIntervalUdp() const;
+
+    /**
+     * Returns refresh interval for TCP.
+     *
+     * @since S60 3.2
+     * @return Refresh Interval for TCP
+     */
+    TInt RefreshIntervalTcp() const;
+
+    /**
+     * Returns available NAT protocols in priority order
+     *
+     * @since S60 3.2
+     * @return Descriptor array of used NAT protocols
+     */
+    const CDesC8Array& AvailableNatProtocols() const;
+
+    /**
+     * Returns interface through which ICE related settings can be queried.
+     * Also reads all Ice settings from Central Repository.
+     * 
+     * @since S60 3.2
+     * @return Interface for ICE settings query
+     * @leave System wide error code if CR fails
+     */
+    MNATFWIceSettings& IceSettingsL();
+
+    /**
+     * Returns interface through which STUN related settings can be queried.
+     * Also reads all STUN settings from Central Repository.
+     *
+     * @since   S60 3.2
+     * @return  Interface for STUN settings query
+     * @leave System wide error code if CR fails
+     */
+    MNATFWStunSettings& StunSettingsL();
+
+    /**
+     * Returns interface through which TURN related settings can be queried.
+     * Also reads all TURN settings from Central Repository.
+     *
+     * @since   S60 3.2
+     * @return  Interface for TURN settings query
+     * @leave System wide error code if CR fails
+     */
+    MNATFWTurnSettings& TurnSettingsL();
+
+    /**
+     * Returns port range for NAT FW via parameters.
+     *
+     * @since S60 3.2
+     * @param aStartPort Start port of the port range
+     * @param aEndPort End port of the port range
+     */
+    void GetPortArea( TUint& aStartPort, TUint& aEndPort ) const;
+
+private:
+
+    /**
+     * Constructor 
+     *
+     * @since S60 3.2
+     */
+    CNATFWNatSettingsImpl();
+
+    /**
+     * Second phase Constructor
+     *
+     * @since S60 3.2
+     * @param aDomain reference to domain name descriptor
+     * @leave KErrNoMemory if out of memory or system wide error code
+     */
+    void ConstructL( const TDesC8& aDomain );
+
+    /**
+     * Method for reading general settings from the Central Repository.
+     * Leaves if memory allocation or Central Repository reading fails.
+     *
+     * @since S60 3.2
+     * @leave KErrNoMemory if out of memory or system wide error code if
+     *        CR errors
+     */
+    void ReadGeneralSettingsL();
+
+    /**
+     * Method for reading internet accesspoint settings from
+     * the Central Repository.
+     *
+     * @since S60 3.2
+     * @param aIapId Internet accesspoint ID   
+     * @leave KErrCorrupt if more than one contents of IAP settings found
+     *        with this IAP ID. System wide error code if CR fails.
+     */
+    void ReadIapSettingsL( TUint32 aIapId );
+
+private: // data
+
+    /**
+     * The Central Repository handler
+     * Own.
+     */
+    CNATFWCenRepHandler* iRepHandler;
+
+    /**
+     * DomainKey to the Central Repository contets
+     * value is in the field of the firs key mask bits
+     * defined in KUNSAFProtocolsFieldTypeMask
+     */
+    TUint32 iDomainKey;
+    
+    /**
+     * Domain where lays the server
+     * Own.
+     */
+    HBufC8* iDomain;
+
+    /**
+     * UDP RefreshI nterval
+     */
+    TUint iRefreshIntervalUdp;
+
+    /**
+     * TCP Refresh Interval
+     */
+    TUint iRefreshIntervalTcp;
+
+    /**
+     * CRLF Refresh Enabled
+     */
+    TBool iCrlfRefreshEnabled;
+    
+    /**
+     * indicates the SharedSecret use
+     */
+    TBool iUseSharedSecret;
+
+    /**
+     * Array of used NAT protocols and priority order
+     * Own.
+     */
+    CDesC8Array* iEcomPlugInPriorityOrderArray;
+    
+    /**
+     * Starting port for the port range
+     */
+    TUint iPortPoolStartPort;
+    
+    /**
+     * Ending port for the port range
+     */
+    TUint iPortPoolEndPort;
+    
+    /**
+     * ICE software settings.
+     * Own.
+     */
+    CNATFWIceSettings* iIceSettings;
+    
+    /**
+     * STUN software settings.
+     * Own.
+     */
+    CNATFWStunSettings* iStunSettings;
+     
+    /**
+     * TURN software settings.
+     * Own.
+     */
+    CNATFWTurnSettings* iTurnSettings;
+    };
+
+#endif // CNATFWNatSettingsImpl_H