diff -r 000000000000 -r 1bce908db942 multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPProfileContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/tsrc/testdriver/siptester/src/CTcSIPProfileContainer.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,285 @@ +/* +* 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 __CTCSIPPROFILECONTAINER_H__ +#define __CTCSIPPROFILECONTAINER_H__ + +// INCLUDES +#include "CTcContextBase.h" +#include "CTcIAPManager.h" +#include +#include +#include +#include + +#include +#include +#include + +#include "TTcSIPReceived.h" +#include "TTcProfileReceived.h" + +#include "sipconnection.h" + +// FORWARD DECLARATIONS +class CTcSIPContext; + +// HELPER CLASSES +class CTcSIPProfile : public CBase + { + public: + + /** + * Create CTcSIPProfile item which is used for storing both + * profile and its id + * + * @param aProfile, ownership is taken + * @param aProfileId + */ + CTcSIPProfile( CSIPProfile* aProfile, TInt aProfileId ); + + /** + * Destructor + */ + ~CTcSIPProfile(); + + /** + * Returns pointer to owned profile + * + * @return reference to CSIPProfile + */ + CSIPProfile& Profile(); + + TInt ProfileId(); + + private: + + CSIPProfile* iProfile; + TInt iProfileId; + }; + +class CTcSIPManagedProfile : public CBase + { + public: + + /** + * Create CTcSIPProfile item which is used for storing both + * profile and its id + * + * @param aManagedProfile, ownership is taken + * @param aManagedProfileId + */ + CTcSIPManagedProfile( CSIPManagedProfile* aManagedProfile, TInt aManagedProfileId ); + + /** + * Destructor + */ + ~CTcSIPManagedProfile(); + + /** + * Returns pointer to owned profile + * + * @return reference to CSIPManagedProfile + */ + CSIPManagedProfile& Profile(); + + TInt ProfileId(); + + private: + + CSIPManagedProfile* iManagedProfile; + TInt iManagedProfileId; + }; + +// CLASS DEFINITION +/** + * CTcSIPProfileContainer implements a container for multiple registry. + * Its task is also to observe and queue SIP notifications for + * future use. + */ +class CTcSIPProfileContainer + : public CBase, + public MSIPProfileRegistryObserver + { + + + + + public: // Constructors and destructor + + /** + * Static constructor. + * + * @param aContext Reference to test context object. + * @param aSip + * @return An initialized instance of this class. + */ + static CTcSIPProfileContainer* NewL( CTcSIPContext& aContext, + CSIP& aSip ); + + /// Destructor + virtual ~CTcSIPProfileContainer(); + + private: + + /** + * Constructor. + * + * @param aContext Reference to test context object. + * @param aIAPName Internet Access Point name to be used. + */ + CTcSIPProfileContainer( CTcSIPContext& aContext, + CSIP& aSip ); + + /// Default constructor. Not implementer. + CTcSIPProfileContainer(); + + /// 2nd phase constructor + void ConstructL(); + + public: // From MSIPProfileRegistryObserver + + void ProfileRegistryEventOccurred(TUint32 aProfileId, TEvent aEvent); + void ProfileRegistryErrorOccurred(TUint32 aProfileId, TInt aError); + + public : // new methods + + /** + * Returns the first item off the receive queue (FIFO). If no + * items are present, the function will wait for aTimeout seconds + * and then try fetching again. + * + * @param aTimeOut Time in seconds waited for items to arrive. + */ + TTcProfileReceived ReceivedProfileItemL( TInt aTimeout ); + + /** + * Add the specified item to the received items queue. + * The item is copied to the internal array. + * + * @param aItem Referece to a received object. + */ + void QueueProfileReceived( TTcProfileReceived& aItem ); + + /** + * @return Reference to Profile Registry Admin interface. + */ + inline CSIPManagedProfileRegistry& ManagedProfileRegistry() + { return *iManagedProfileRegistry; }; + + /** + * @return Reference to Profile Registry User interface. + */ + inline CSIPProfileRegistry& ProfileRegistry() + { return *iProfileRegistry; }; + + + /** + * Store managed profile, cleanupstack is used internally so caller shouldn't use + * Cleanupstack::PushL for aManagedProfile before calling the function + * + * @param aManagedProfile, ownership is taken + */ + void AddManagedProfileL( CSIPManagedProfile* aManagedProfile ); + + /** + * Returns profile by its id from profiles array. + * If profile doesnt's exist already in profiles array, new instance + * will be created through profile registry and created profile will + * be stored to profiles array + * + * @return reference to profile + */ + CSIPProfile& GetProfileByIdL( TInt aProfileId ); + + /** + * Returns managed profile by its id from managed profiles array. + * If managed profile doesnt's exist already in managed profiles array, + * new instance will be created through managed profile registry and + * created managed profile will be stored to managed profiles array + * + * @return reference to managed profile + */ + CSIPManagedProfile& GetManagedProfileByIdL( TInt aManagedProfileId ); + + /** + * Returns default profile as managed profile. + * + * @return reference to managed profile + */ + CSIPManagedProfile& GetDefaultProfileL(); + + /** + * Deletes stored profile. + * + * @param aProfileId + */ + void DeleteProfileById( TInt aProfileId ); + + /** + * Deletes stored managed profile. + * + * @param aManagedProfileId + */ + void DeleteManagedProfileById( TInt aManagedProfileId ); + + private: // New methods + + /** + * 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; + + /// Reference to the test contextg. Not owned. + CTcSIPContext& iContext; + + /// Timeout timer. Owned. + CDeltaTimer* iTimer; + + /// Timeout entry. Owned. + TDeltaTimerEntry iReceiveTimeout; + + /// SIP stack. Not Owned. + CSIP& iSip; + + /// Admin interface to profile registry. Owned. + CSIPManagedProfileRegistry* iManagedProfileRegistry; + + /// User interface to profile registry. Owned. + CSIPProfileRegistry* iProfileRegistry; + + /// Array of received items. Owned. + CArrayFixSeg< TTcProfileReceived > iReceiveQueue; + + /// Array of profiles retrieved from ProfileRegistry + RPointerArray< CTcSIPProfile > iProfiles; + + /// Array of managed profiles retrieved profiles from ManagedProfileRegistry + RPointerArray< CTcSIPManagedProfile > iManagedProfiles; + + + }; + +#endif // __CTCSIPPROFILECONTAINER_H__