--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPContext.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,265 @@
+/*
+* Copyright (c) 2004 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: See class definition below.
+*
+*/
+
+#ifndef __CTCSIPCONTEXT_H__
+#define __CTCSIPCONTEXT_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <centralrepository.h>
+#include "CTcContextBase.h"
+#include "CTcIAPManager.h"
+#include <sipobserver.h>
+#include <sipprofileregistryobserver.h>
+#include "TTcProfileReceived.h"
+#include "sipclientsimulatorcli.h"
+
+// FORWARD DECLARATIONS
+class CSIP;
+class CTcSIPConnectionContainer;
+class CTcSIPProfileContainer;
+class CTcSIPHttpDigestContainer;
+class CTcSIPClientDiscoveryContainer;
+class CTcFreezer;
+class CTcFileHandler;
+class CTcSIPIMSAuthenticator;
+class CTcSIPIMSAuthenticationParams;
+
+// CLASS DEFINITION
+/**
+ * CTcSIPContext implements the test context (MTcTestContext) for SIP testing.
+ */
+class CTcSIPContext
+ : public CTcContextBase,
+ public MSIPObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Static constructor. Leaves pointer to cleanup stack.
+ *
+ * @param aCodec Reference to CTRL codec object,
+ * initialized to a valid request.
+ * @param aIAPId IAPId as selected by user from TC settings.
+ * @param aIsMandatory used for determining if the SIP stack
+ * is automatically started. If default value (ETrue) is used,
+ * then SIP stack is started automatically.
+ * @return An initialized instance of this class.
+ */
+ static CTcSIPContext* NewLC( CTcCTRLCodec& aCodec,
+ TInt aIAPId,
+ TBool aIsMandatory );
+
+ /// Destructor
+ ~CTcSIPContext();
+
+ private:
+
+ /**
+ * Constructor.
+ *
+ * @param aCodec Reference to CTRL codec object,
+ * initialized to a valid request.
+ */
+ CTcSIPContext( CTcCTRLCodec& aCodec );
+
+ /// Default constructor. Not implemented.
+ CTcSIPContext();
+
+ /**
+ * 2nd phase constructor
+ *
+ * @param aIAPId IAPId as selected by user from TC settings.
+ * @param aIsMandatory used for determining if the SIP stack
+ * is automatically started. If default value (ETrue) is used,
+ * then SIP stack is started automatically.
+ */
+ void ConstructL( TInt aIAPId, TBool aIsMandatory );
+
+ protected: // From CTcContextBase
+
+ TTcCommandBase* CreateCommandL( TTcIdentifier& aId,
+ MTcTestContext& aContext );
+
+ public: // From MSIPObserver
+
+ void IncomingRequest( TUint32 aIapId,
+ CSIPServerTransaction* aTransaction );
+ void TimedOut( CSIPServerTransaction& aSIPServerTransaction );
+
+ public: // New methods
+
+ /// @return Reference to the default SIP connection.
+ inline CTcSIPConnectionContainer& Connection()
+ { return *iSipConnection; }
+
+ /// @return Reference to the default SIP profile.
+ inline CTcSIPProfileContainer& Profile()
+ { return *iSipProfile; }
+
+ /// @return Reference to the FileHandler
+ inline CTcFileHandler& FileHandler()
+ { return *iFileHandler; }
+
+ /// @return Reference to the SIP stack.
+ inline CSIP& SIP()
+ { return *iSip; }
+
+ /// @return Reference to the Internet Access Point name array
+ inline const MDesC8Array& IAPNames() const
+ { return *iIapManager; }
+
+ /**
+ * Lookup the CommDb IAP Id matching the provided IAP name.
+ *
+ * @param aName IAP name
+ * @return IAP id
+ */
+ inline TUint32 IAPIdL( const TDesC8& aName ) const
+ { return iIapManager->IdForNameL( aName ); };
+
+ /**
+ * Lookup the IAP Name matching the provided CommDb IAP Id.
+ *
+ * @param aIapId IAP id
+ * @return IAP name reference
+ */
+ inline const TDesC8& IAPNameL( TInt aIapId ) const
+ { return iIapManager->NameForIdL( aIapId ); };
+
+ /**
+ * Get reference to GetMandatoryValue
+ * This is used only if SIP stack is created manually
+ * @return boolean value indicating the
+ * SIP stack state (ETrue==created)
+ */
+ TBool GetMandatoryValue( void ) const;
+
+ /**
+ * Create SIP stack
+ * Create CSIP, CSIPConnection, CTcSIPConnectionContainer
+ * and CTcSIPProfileContainer
+ * This is used only if SIP stack is created manually
+ */
+ void CreateSipStack( void );
+ CTcSIPConnectionContainer* CreateSipStack( const TDesC8& aName ); //16.9.
+
+ /**
+ * Gives reference to the default SIP Http Digest container or
+ * leaves with KErrNotFound if container doesn't exist
+ *
+ */
+ CTcSIPHttpDigestContainer& DigestContainerL();
+
+ /**
+ * Remove HttpDigest container
+ *
+ */
+ void RemoveDigestContainer();
+
+ /**
+ * Creates SIP ClientDiscovery container
+ * leaves with KErrAlreadyExists if container exists already
+ */
+ void CreateClientDiscoveryL( TUid aUid );
+
+ /**
+ * Removes SIP ClientDiscovery container
+ */
+ void RemoveClientDiscovery();
+
+ /**
+ * Gives reference to the SIP ClientDiscovery container or
+ * leaves with KErrNotFound if container doesn't exist
+ *
+ */
+ CTcSIPClientDiscoveryContainer& ClientDiscoveryL();
+
+ /**
+ * Freeze Tester thread asynchronously
+ *
+ */
+ void IssueFreezeL( TInt aFreezeTimeSeconds );
+
+ /**
+ * Freeze tester timer callback
+ *
+ */
+ static TInt Freeze( TAny* aAny );
+
+
+ /**
+ * Authenticate
+ */
+ CTcSIPIMSAuthenticationParams& AuthenticateL( const TDesC8& aNonce );
+
+ /**
+ * Map a CSIP error code to a verbose description
+ *
+ * @param aError One of CSIP::TError codes
+ * @return Error message for the code
+ */
+ const TDesC8& SIPErrorToText( TInt aError );
+
+ RSipClientSimulator& SipClientSimulator();
+
+ CRepository& Repository();
+
+ private: // data
+
+ /// Boolean value indicating the SIP stack creation. Owned.
+ TBool iIsMandatory;
+
+ /// Internet Access Point name/id list. Owned.
+ CTcIAPManager* iIapManager;
+
+ /// IAP id. Owned.
+ TInt iIAPId;
+
+ /// SIP stack. Owned.
+ CSIP* iSip;
+
+ /// Default SIP connection. Owned.
+ CTcSIPConnectionContainer* iSipConnection;
+
+ /// Default SIP profile. Owned.
+ CTcSIPProfileContainer* iSipProfile;
+
+ /// Defaul SIP Http Digest. Owned.
+ CTcSIPHttpDigestContainer* iSipHttpDigest;
+
+ /// Defaul SIP ClientDiscover. Owned.
+ CTcSIPClientDiscoveryContainer* iSipClientDiscovery;
+
+ /// For Tester thread freezing
+ CDeltaTimer* iFreezer;
+
+ TInt iFreezeTimeSeconds;
+
+ TDeltaTimerEntry iTimerEntry;
+
+ /// For file creation and deletion. Owned.
+ CTcFileHandler* iFileHandler;
+
+ /// For IMS authentication. Owned.
+ CTcSIPIMSAuthenticator* iIMSAuthenticator;
+
+ RSipClientSimulator iSipClientSimulator;
+ CRepository* iCenRep;
+ };
+
+#endif // __CTCSIPCONTEXT_H__