/*
* 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: API class for querying NAT FW related software settings
*
*/
#ifndef C_NATSETTINGSAPI_H
#define C_NATSETTINGSAPI_H
#include <e32base.h>
#include <badesca.h>
class CNATFWNatSettingsImpl;
class MNATFWIceSettings;
class MNATFWStunSettings;
class MNATFWTurnSettings;
/**
* API class to retrieve NAT FW Settings.
*
* Class uses Central Repository to retrieve settings values.
*
* @lib natfwnatsettings.lib
* @since S60 3.2
*/
class CNATFWNatSettingsApi : public CBase
{
public:
/**
* A two-phase constructor.
*
* In initial phase domain name 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.
*/
IMPORT_C static CNATFWNatSettingsApi* NewL( const TDesC8& aDomain );
/**
* A two-phase constructor.
* The instance is put to the cleanup stack.
*
* In initial phase domain name 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.
*/
IMPORT_C static CNATFWNatSettingsApi* NewLC( const TDesC8& aDomain );
/**
* Desctructor
*
* @since S60 3.2
*/
virtual ~CNATFWNatSettingsApi();
/**
* Fetch Internet acces point settings from Central Repository
* for specific IAP ID. Replaces domain specific UDP And TCP refresh
* interval and retransmission timeout settings if new ones found.
*
* @since S60 3.2
* @param aIapId The Internet acces point ID
* @leave KErrCorrupt if more than one identical IAP ID values
* found or system wide error code in other CR errors
*/
IMPORT_C void RetrieveIapSettingsL( TUint aIapId );
/**
* Returns Domain name
*
* @since S60 3.2
* @return domain name
*/
IMPORT_C const TDesC8& Domain() const;
/**
* Returns refresh interval for UDP.
*
* @since S60 3.2
* @return Refresh Interval for UDP
*/
IMPORT_C TInt RefreshIntervalUdp() const;
/**
* Returns refresh interval for TCP.
*
* @since S60 3.2
* @return Refresh Interval for TCP
*/
IMPORT_C TInt RefreshIntervalTcp() const;
/**
* Returns true if CRLF refresh is enabled.
*
* @since S60 3.2
* @return True if enabled
*/
IMPORT_C TBool CrlfRefreshEnabled() const;
/**
* Returns true if shared secret is enabled.
*
* @since S60 3.2
* @return ETrue if used
*/
IMPORT_C TBool UseSharedSecret() const;
/**
* Returns port range for NAT FW use.
*
* @since S60 3.2
* @param aStartPort Start port of the port range
* @param aEndPort End port of the port range
*/
IMPORT_C void GetPortArea( TUint& aStartPort, TUint& aEndPort ) const;
/**
* Returns available NAT protocols in priority order
*
* @since S60 3.2
* @return Descriptor array of used NAT protocols
*/
IMPORT_C const CDesC8Array& AvailableNatProtocols() const;
/**
* Returns interface through which ICE related settings can be queried.
* Also reads all ICE settings from Central Repository.
* Ownership is not transferred.
*
* @since S60 3.2
* @return Interface for ICE settings query
* @leave System wide error code if CR fails
*/
IMPORT_C MNATFWIceSettings& IceSettingsL() const;
/**
* Returns interface through which STUN related settings can be queried.
* Also reads all STUN settings from Central Repository.
* Ownership is not transferred.
*
* @since S60 3.2
* @return Interface for STUN settings query
* @leave System wide error code if CR fails
*/
IMPORT_C MNATFWStunSettings& StunSettingsL() const;
/**
* Returns interface through which TURN related settings can be queried.
* Also reads all TURN settings from Central Repository.
* Ownership is not transferred.
*
* @since S60 3.2
* @return Interface for TURN settings query
* @leave System wide error code if CR fails
*/
IMPORT_C MNATFWTurnSettings& TurnSettingsL() const;
private:
/**
* Constructor
*/
CNATFWNatSettingsApi();
/**
* Second phase Constructor
*/
void ConstructL( const TDesC8& aDomain );
private: // data
/**
* NAT Settings implementation
* own
*/
CNATFWNatSettingsImpl* iSettingsImpl;
};
#endif // C_NATSETTINGSAPI_H