diff -r 33a5d2bbf6fc -r 73a1feb507fb tsrc/musenginestub/inc/mussipprofilehandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/musenginestub/inc/mussipprofilehandler.h Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,215 @@ +/* +* Copyright (c) 2005-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: +* Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. +* +*/ + + + +#ifndef MUSSIPPROFILEHANDLER_H +#define MUSSIPPROFILEHANDLER_H + + +// INTERNAL INCLUDE +#include "musunittesting.h" + +// SYSTEM INCLUDE +#include +#include +#include +#include +#include + + +class CSIPProfile; +class CSIPProfileRegistry; +class CSipProfileAlrController; +class CUri8; +class MMusSipProfileUser; + +/** +* +* @lib musengine.lib +*/ +class CMusSipProfileHandler : public CBase, + public MSIPProfileRegistryObserver, + public MSIPObserver, + public MSIPConnectionObserver, + public MSipProfileAlrObserver + { + MUS_UNITTEST( UT_CMusEngSipProfileHandler ) + + public: + + /** + * Creates new instance of CMusSipProfileHandler + * @param aSipProfileId profile id of requested profile + */ + static CMusSipProfileHandler* NewL( MMusSipProfileUser& aUser ); + + /** + * Destructor + * + */ + ~CMusSipProfileHandler(); + + + public: // API + + /** + * Creates the SIP profile used. + * @param aSipProfileId profile ID of requested SIP profile + */ + void CreateProfileL( TUint32 aSipProfileId ); + + /** + * Returns the used SIP profile. + * @pre SipProfileL has been called + * @return SIP profile or NULL if the SIP profile cannot be found, + * The ownership is not transferred. + */ + CSIPProfile* Profile(); + + /** + * Returns the registered public user identity of the used SIP profile + * @pre SipProfileL has been called + * @return a pointer to the URI, the ownership is transferred + */ + CUri8* UserFromProfileLC(); + + /** + * Refreshes the availabilities of the access points + * for the used SIP profile. + * Should be called when a MuS session terminates. + */ + void RefreshIapAvailabilities(); + + /** + * @return ETrue if SIP profile returned by Profile() is registered + */ + TBool IsRegistered(); + + + private: + + /** + * Constructor + */ + CMusSipProfileHandler( MMusSipProfileUser& aUser ); + + /** + * Second-phase constructor + */ + void ConstructL(); + + private: // From MSIPProfileRegistryObserver + + /** + * An event related to SIP Profile has accorred + * + * @param aProfileId a profile Id + * @param aEvent an occurred event + **/ + void ProfileRegistryEventOccurred( + TUint32 aProfileId, + MSIPProfileRegistryObserver::TEvent aEvent ); + + /** + * An asynchronous error has occurred related to SIP profile + * Event is send to those observers, who have the + * corresponding profile instantiated. + * + * @param aProfileId the id of failed profile + * @param aError an occurred error + */ + void ProfileRegistryErrorOccurred( + TUint32 aProfileId, + TInt aError ); + + private: // From MSIPObserver + + void IncomingRequest( TUint32 aIapId, + CSIPServerTransaction* aTransaction ); + + void TimedOut( CSIPServerTransaction& aTransaction ); + + private: // MSIPConnectionObserver must be implemented to enable SIP profile + + void IncomingRequest (CSIPServerTransaction* aTransaction ); + + void IncomingRequest (CSIPServerTransaction* aTransaction, + CSIPDialog& aDialog ); + + void IncomingResponse (CSIPClientTransaction& aTransaction ); + + void IncomingResponse ( CSIPClientTransaction& aTransaction, + CSIPDialogAssocBase& aDialogAssoc ); + + void IncomingResponse ( CSIPClientTransaction& aTransaction, + CSIPInviteDialogAssoc* aDialogAssoc ); + + void IncomingResponse( CSIPClientTransaction& aTransaction, + CSIPRegistrationBinding& aRegistration ); + + void ErrorOccured( TInt aError, CSIPTransactionBase& aTransaction ); + + void ErrorOccured( TInt aError, + CSIPClientTransaction& aTransaction, + CSIPRegistrationBinding& aRegistration ); + + void ErrorOccured( TInt aError, + CSIPTransactionBase& aTransaction, + CSIPDialogAssocBase& aDialogAssoc ); + + void ErrorOccured( TInt aError, CSIPRefresh& aSIPRefresh ); + + void ErrorOccured( TInt aError, + CSIPRegistrationBinding& aRegistration ); + + void ErrorOccured( TInt aError, CSIPDialogAssocBase& aDialogAssoc ); + + void InviteCompleted( CSIPClientTransaction& aTransaction ); + + void InviteCanceled( CSIPServerTransaction& aTransaction ); + + void ConnectionStateChanged( CSIPConnection::TState aState ); + + private: // From MSipProfileAlrObserver + + void AlrEvent( MSipProfileAlrObserver::TEvent aEvent, + TUint32 aProfileId, + TUint32 aSnapId, + TUint32 aIapId ); + + void AlrError( TInt aError, + TUint32 aProfileId, + TUint32 aSnapId, + TUint32 aIapId ); + + private: // New functions + + TUint32 ProfileId() const; + + private: // DATA + + MMusSipProfileUser& iUser; + CSIP* iSip; + CSIPProfileRegistry* iProfileRegistry; + CSipProfileAlrController* iProfileAlrController; + CSIPProfile* iSipProfile; + }; + + +#endif // MUSSIPPROFILEHANDLER_H