/*
* 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: Plugin interface description.
*
*/
#ifndef NSPPLUGIN_H
#define NSPPLUGIN_H
#include <e32base.h>
#include "nsppluginreturndef.h"
class CSdpDocument;
class MNSPSessionObserver;
/** Interface UID of this ECOM interface */
const TUid KNSPPluginIFUid = { 0x102832F0 };
/**
* Plugin interface.
*
* ECOM Plugin interface.
*
* @lib
* @since S60 3.2
*/
class CNSPPlugin : public CBase
{
public: // Enumerations
/** Session parameter keys */
enum TNSPSessionParamKey
{
ENSPResourseReservationStatusKey=0, /*read-only*/
ENSPMediaTypeOfServiceKey=1
};
/** NAT traversal resource reservation status */
enum TNSPResourseReservationStatus
{
ENSPResourcesNotReserved=0,
ENSPResourcesReserved=1
};
public: // Constructors and destructor
/**
* Ecom plugin initialization.
*/
static inline CNSPPlugin* NewL( TUid aUid );
/**
* Default destructor. Any remaining NAT sessions are deleted.
*/
inline ~CNSPPlugin();
public: // New functions
/**
* Creates session object, and returns a handle to that object.
* Client of the class uses services via this handle.
*
* @since S60 3.2
* @param aSessionObserver Observer for created session,
* for async callbacks.
* @param aIapId Internet access point identifier.
* @param aDomain Used domain for settings query.
* @param aProtocol Used transport protocol, values:
* 1 = TCP,
* 2 = UDP.
* @return Session ID, via this handle the session is used.
*/
virtual TUint NewSessionL( MNSPSessionObserver& aSessionObserver,
TUint32 aIapId, const TDesC8& aDomain, TUint aProtocol ) = 0;
/**
* With this call NAT session is terminated.
*
* @since S60 3.2
* @param aSessionId The ID identifying session.
*/
virtual void CloseSessionL( TUint aSessionId ) = 0;
/**
* Sets the value of a session parameter.
*
* @param aSessionId The ID identifying session.
* @param aParamKey identifies the parameter.
* @param aParamValue value of the parameter.
* @return KErrNotFound if the key is not found or
* other system wide error code on failure.
*/
virtual TInt SetSessionParam( TUint aSessionId,
TNSPSessionParamKey aParamKey, TUint aParamValue );
/**
* Gets a value of a session parameter.
*
* @param aSessionId The ID identifying session.
* @param aParamKey identifies the parameter.
* @return value of the parameter or
* KErrNotFound if the value is not available or
* other system wide error code on failure.
*/
virtual TInt GetSessionParam( TUint aSessionId,
TNSPSessionParamKey aParamKey );
/**
* Initial NAT specific Sdp content is added to Offer in here.
* If 'KNatAsync' return value is used, then async callback
* OfferReady is expected.
*
* @since S60 3.2
* @param aSessionId The ID identifying session.
* @param aOffer Sdp offer document.
* @return NAT status, if async signaling expected.
*/
virtual TNatReturnStatus CreateOfferL( TUint aSessionId,
CSdpDocument*& aOffer ) = 0;
/**
* NAT FW specific Sdp content is added both Offer and Answer.
* If 'KNatAsync' return value is used, then async callbacks
* AnswerReady and OfferReady are expected.
*
* @since S60 3.2
* @param aSessionId The ID identifying session.
* @param aOffer Sdp offer document.
* @param aAnswer Sdp answer document.
* @return NAT status, if async signaling expected.
*/
virtual TNatReturnStatus ResolveL( TUint aSessionId,
CSdpDocument*& aOffer, CSdpDocument*& aAnswer ) = 0;
/**
* Answer to initial Offer interpred in here.
* If 'KNatAsync' return value is used, then async callback
* AnswerReady is expected.
*
* @since S60 3.2
* @param aSessionId The ID identifying session.
* @param aAnswer Sdp answer document.
* @return NAT status, if async signaling expected.
*/
virtual TNatReturnStatus DecodeAnswerL( TUint aSessionId,
CSdpDocument*& aAnswer ) = 0;
/**
* Offer can be updated while ResolveL is still ongoing, i.e.
* OfferReady callback is not yet received. Operation does not
* affect on state, hence only synchronous update.
*
* @since S60 3.2
* @param aSessionId Session unique identier.
* @param aOffer Sdp offer document.
*/
virtual void UpdateL( TUint aSessionId, CSdpDocument*& aOffer ) = 0;
/**
* Empty INVITE, with certain NAT protocols, can be interpret as request
* to restart connection checks. This method must be called is such
* a message is received. If 'KNatAsync' return value is used,
* then async callbacks OfferReady and AnswerReady are expected.
*
* @since S60 3.2
* @param aSessionId Session unique identier.
* @return NAT status, if async signaling expected.
*/
virtual TNatReturnStatus RestartL( TUint aSessionId ) = 0;
public: // data
/**
* Unique instance identifier key
*/
TUid iDtor_ID_Key;
};
#include "nspplugin.inl"
#endif // NSPPLUGIN_H
// end of file