diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPHttpDigestContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPHttpDigestContainer.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2006 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 __CTCSIPHTTPDIGESTCONTAINER_H__ +#define __CTCSIPHTTPDIGESTCONTAINER_H__ + +// INCLUDES +#include +#include + +#include +#include +#include + +// FORWARD DECLARATIONS +class CTcSIPContext; +class CSIP; + +// CLASS DEFINITION +/** + * CTcSIPHttpDigestContainer implements a container for a single TSIPHttpDigest + * object. Its task is also to observe and queue httpdigest challenges + */ +class CTcSIPHttpDigestContainer + : public CBase, + public MSIPHttpDigestChallengeObserver, + public MSIPHttpDigestChallengeObserver2 + { + public: // Constructors and destructor + + /** + * Static constructor. + * + * @param aContext Reference to test context object. + * @param aIAPName Internet Access Point name to be used. + * @return An initialized instance of this class. + */ + static CTcSIPHttpDigestContainer* NewL( CTcSIPContext& aContext, + CSIP& aSip ); + + /// Destructor + ~CTcSIPHttpDigestContainer(); + + private: + + /** + * Constructor. + * + * @param aContext Reference to test context object. + * @param aSip + */ + CTcSIPHttpDigestContainer( CTcSIPContext& aContext ); + + /** + * Second phase constructor + * + * @param aSip + */ + void ConstructL( CSIP& aSip ); + + /// Default constructor. Not implemented. + CTcSIPHttpDigestContainer(); + + public: // From MSIPHttpDigestChallengeObserver + + void ChallengeReceived( const TDesC8& aRealm ); + + public: //From MSIPHttpDigestChallengeObserver2 + + void ChallengeReceived( const CSIPClientTransaction& aTransaction ); + + void ChallengeReceived( const CSIPRefresh& aRefresh ); + + public: // New methods + + /** + * Returns the first challenge off the received challenges queue (FIFO). + * items are present, the function will wait for aTimeout seconds + * and then try fetching again. Leaves with error if still unavailable + * to fetch + * + * @param aTimeOut Time in seconds waited for items to arrive. + * @return challenge which ownership is transferred + */ + HBufC8* ReceivedChallengeL( TInt aTimeout ); + + /// @return Reference to the contained TSIPHttpDigest object. + inline CSIPHttpDigest& HttpDigest() { return *iSipHttpDigest; } + + private: + + /** + * Add the specified realm to the received challenges queue. + * The item is copied to the internal array. + * + * @param aRealm Referece to a received challenge. + */ + void QueueReceivedChallengeL( const TDesC8& aRealm ); + + /** + * CDeltaTimer callback. Called when the timer entry expires. + * + * @param aSelf Pointer to self + * @return KErrNone + */ + static TInt ReceiveTimeout( TAny* aSelf ); + + + private: // data + + /// Active scheduler wrapper for async waiting. Owned. + CActiveSchedulerWait iActiveWait; + + /// Timeout timer. Owned. + CDeltaTimer* iTimer; + + /// Timeout entry. Owned. + TDeltaTimerEntry iReceiveTimeout; + + /// Reference to the test context. Not owned. + CTcSIPContext& iContext; + + /// Array of received challenges. Owned. + RPointerArray iReceivedChallengesQueue; + + /// SIP HttpDigest. Owned. + CSIPHttpDigest* iSipHttpDigest; + }; + +#endif // __CTCSIPHTTPDIGESTCONTAINER_H__