diff -r 65a3ef1d5bd0 -r f742655b05bf sipvoipprovider/svphold/inc/svpholdcontroller.h --- a/sipvoipprovider/svphold/inc/svpholdcontroller.h Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -/* -* 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: Hold controller, interface class for handling hold -* -*/ - - -#ifndef SVPHOLDCONTROLLER_H -#define SVPHOLDCONTROLLER_H - -#include -#include -#include "svpholdcontext.h" -#include "svputdefs.h" - -class CMceSession; -class MSVPHoldObserver; -class CSVPSessionBase; - -const TInt KErrSVPHoldErrorBase = -2000; -const TInt KErrSVPHoldStateError = KErrSVPHoldErrorBase - 1; -const TInt KErrSVPHoldInProgress = KErrSVPHoldErrorBase - 2; -const TInt KErrSVPHoldResumeInProgress = KErrSVPHoldErrorBase - 3; -const TInt KErrSVPHoldRequestPending = KErrSVPHoldErrorBase - 4; -const TInt KErrSVPHoldNotHoldRequest = KErrSVPHoldErrorBase - 5; -const TInt KErrSVPHoldUnacceptableResponseAttribute = KErrSVPHoldErrorBase - 6; -const TInt KErrSVPHoldLocalOldwayholdNeeded = KErrSVPHoldErrorBase - 7; -const TInt KErrSVPHoldRequestProcessingNotReady = KErrSVPHoldErrorBase - 8; - - -/** -* Hold controller. -* @lib svp.dll -* @since Series 60 3.2 -*/ -class CSVPHoldController : public CBase - { -public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CSVPHoldController* NewL( - CMceSession& aSession, - TMceTransactionDataContainer& aContainer, - MSVPHoldObserver* aObserver, - TBool aIsMobileOriginated ); - - /** - * Two-phased constructor. - */ - static CSVPHoldController* NewLC( - CMceSession& aSession, - TMceTransactionDataContainer& aContainer, - MSVPHoldObserver* aObserver, - TBool aIsMobileOriginated ); - - /** - * Destructor. - */ - virtual ~CSVPHoldController(); - -public: // Methods - - /** - * Holds session. If hold fails then observer method is called - * @since Series 60 3.2 - * @param aSession Session object. Ownership not transferred - * @return Error code - */ - TInt HoldSession( CMceSession* aSession ); - - /** - * Resumes session. If resume fails then observer method is called - * @since Series 60 3.2 - * @param aSession Session object. Ownership not transferred - * @return Error code - */ - TInt ResumeSession( CMceSession* aSession ); - - /** - * Retries previous failed request - * @since Series 60 3.2 - * @param aSession Session object. Ownership not transferred - * @return Error code - */ - TInt RetryHoldRequest( CMceSession* aSession ); - - /** - * This method must be called after hold/resume expiration time is - * exceeded. - * @since Series 60 3.2 - */ - void TimedOut(); - - /** - * Examines incoming request for the case of hold/resume. - * @since Series 60 3.2 - * @param aSession Session object. Ownership not transferred - * @return KErrSVPHoldNot if is other type than hold/resume, - * system wide error code or KErrNone if succesful. - * If KErrNone, observer methods are called. - */ - TInt IncomingRequest( CMceSession* aSession ); - - /** - * Examines response for hold request. - * @since Series 60 3.2 - * @param aSession Session object. Ownership not transferred - * @param aStatusCode Status code of the response - * @return KErrSVPHoldNotHoldRequest if is other type than hold/resume, - * system wide error code or KErrNone if succesful. - * If KErrNone, observer methods are called. - */ - TInt IncomingResponse( CMceSession* aSession, TInt aStatusCode ); - - /** - * Returns ETrue if holding/resuming session is ongoing. - * @since Series 60 3.2 - * @return ETrue if holding/resuming of session is ongoing - */ - TBool HoldInProgress() const; - - /** - * Returns ETrue if holding/resuming error caused hold state - * to roll back to its previous state - * @since Series 60 3.2 - * @return ETrue if holding/resuming rolleed back - */ - TBool HoldRolledBack() const; - - /** - * Returns Hold failed -boolean value. After this function call - * flag is cleared. - * @since Series 60 3.2 - * @return ETrue if hold failed, EFalse otherways - */ - TBool HoldFailed(); - - /** - * Returns Resume failed -boolean value. If resume has failed, session - * must be terminated, and it cannot do before MCE session state is - * in connected state. - * @since Series 60 3.2 - * @return ETrue if resume failed, EFalse otherways - */ - TBool ResumeFailed(); - - /** - * Continues processing of local hold/resume request. - * @since Series 60 3.2 - * @param aSession MCE session - * @return error code - */ - TInt ContinueHoldProcessing( CMceSession& aSession ); - - /** - * Hold / Resume request has failed - * @since Series 60 3.2 - * @param aSession MCE session - * @param aStatusCode reason - * @param aBase SVP session base - * @return error code - */ - TInt RequestFailed( CMceSession& aSession, TInt aStatusCode, CSVPSessionBase& aBase ); - - /** - * Checks if currently crossover situation - * @since Series 60 3.2 - * @param aBase SVP session base - */ - void CheckCrossOver( CSVPSessionBase& aBase ); - - /** - * Returns session hold state - * @since Series 60 3.2 - * @return Current hold state (Holded only if local stream on hold) - */ - TSVPSessionHoldState HoldState() const; - - /** - * Returns session hold request type - * @since Series 60 3.2 - * @return Current hold request type - */ - TSVPHoldRequestType HoldRequest() const; - - /** - * After completed & succesful IN / OUT Request, returns occurred event. - * @since Series 60 3.2 - * @return Occurred event to be informed to client application - */ - MCCPCallObserver::TCCPCallEvent HoldEvent(); - - /** - * Sets mute state to Hold Controller - * @since Series 60 3.2 - * @param aMuted Boolean value for mute value - */ - void Muted( TBool aMuted ); - - /** - * Refreshes hold state in local hold state when non-hold re-invite received - * @since Series 60 3.2 - * @param - */ - void RefreshHoldStateL(); - -private: - - /** - * C++ default constructor. - */ - CSVPHoldController(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL( CMceSession& aSession, - TMceTransactionDataContainer& aContainer, - MSVPHoldObserver* aObserver, - TBool aIsMobileOriginated ); - - /** - * HoldAllowed - */ - TBool HoldAllowed(); - - /** - * ResumeAllowed - */ - TBool ResumeAllowed(); - - /** - * IncomingRequestAllowed - */ - TBool IncomingRequestAllowed(); - - /** - * IncomingResponseAllowed - */ - TBool IncomingResponseAllowed(); - - /** - * Refresh hold state - * @since S60 3.2 - * @param aMediaStream Representation of MCE media stream - */ - void RefreshL( CMceMediaStream& aMediaStream ); - -private: // data - - // Context of hold - CSVPHoldContext* iContext; - - // Previous hold state - TSVPHoldState iPreviousHoldState; - - // Flag for readyness of hold request - TBool iHoldRequestCompleted; - - // Desired hold request for re-Invite crossover case - TSVPHoldDesiredTransition iHoldRequest; - - // Reinvite crossover flag (race condition) - TBool iReinviteCrossover; - -private: - - // For testing - SVP_UT_DEFS - - }; - -#endif // SVPHOLDCONTROLLER_H -