diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPContext.h --- /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 +#include +#include "CTcContextBase.h" +#include "CTcIAPManager.h" +#include +#include +#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__