--- /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