diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcesession.h --- a/mmsharing/livecommsui/lcui/tsrc/mustester/Stubs/mceclientstub/inc/mcesession.h Tue Aug 31 15:12:07 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,370 +0,0 @@ -/* -* Copyright (c) 2005 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: -* -*/ - - -#ifndef CMCESESSION_H -#define CMCESESSION_H - -// INCLUDES -#include -#include - -// FORWARD DECLARATIONS -class CDesC8Array; -class TMceIds; -class CMceMediaStream; -class CMceManager; -class TMceFactory; -class RReadStream; -class RWriteStream; -class CMceItcSender; -class CMceSessionReceiver; -class MMceFcMsgObserver; -class CMceComSession; -class CMceMsgBase; -class TMceEvent; -class CMceInSession; -class MDesC8Array; -class CMceStreamBundle; - - -// CLASS DECLARATION - -/** -* Base class for MCE sessions, inherited by both CMceInSession and CMceOutSession. -* -* CMceSession represents peer-to-peer connection made with remote terminal. -* This connection is also known as dialog and it is set up using SIP INVITE -* method. -* -* The characteristics of the session are defined by user of this class by attaching -* media streams into the session. -* -* After the session has been succesfylly established, it can be later updated and -* must be finally terminated. -* -* If for any reason instance of this class is deleted while in established state, -* session is automatically terminated by MCE server. -* -* @lib mceclient.lib -*/ -class CMceSession : public CBase - { - public: // Session states - - enum TState - { - EIdle, // Idle - EOffering, // Outgoing session, or session update establishment in progress, - EIncoming, // Session received incoming call - EReserving, // UpdateL called to incoming session during session establishment - EAnswering, // Answering an incoming call - EProceeding, // Session media negotiations proceeding - EEstablished, // Session established - ECancelling, // Cancelling outgoing session establishment - ETerminating, // Terminating session - ETerminated, // Session terminated - }; - - public: // Session termination reasons - - enum TReason - { - EDeclined, - EBusy, - ECancelled, - EDisconnected - }; - - public: - - /** - * Destructor. - */ - virtual ~CMceSession(); - - public: // Functions - - /** - * Returns the state of the session. - * @return The current state of the session - */ - IMPORT_C TState State() const; - - /** - * Returns the state of network connection of the session. - * @return ETrue if connection active, EFalse if connection inactive. - */ - IMPORT_C TBool ConnectionActive() const; - - - /** - * Removes media stream from session. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @post aMediaStream cannot be used anymore and contents of - * previously returned stream array (CMceSession::Streams()) - * are not anymore valid - * @param aMediaStream media stream to be removed - */ - IMPORT_C void RemoveStreamL( CMceMediaStream& aMediaStream ); - - /** - * Adds media stream into session. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @pre aMediaStream != 0 - * @param aMediaStream, media stream to be added. - * ownership is transferred. - */ - virtual void AddStreamL( CMceMediaStream* aMediaStream ); - - /** - * Updates offered session parameters during session - * establishement phase for first answer. - * Updates established session using re-invite. - * In state EIncoming the timeout value must be smaller or equal to - * offered value obtained by SessionTimer(). - * @pre State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @post State() == CMceSession::EReserving for incoming session || - * State() == CMceSession::EOffering for established session - * @param aTimeout, the session timer value in seconds - * @param aHeaders, SIP headers to be added. Ownership is - * transferred. - * @param aContentType, content type of the body. - * Ownership is transferred. - * @param aContent, content to be added in body. Ownership is - * transferred. - * @param aContentHeaders, content headers to be added. Ownership is - * transferred. - */ - IMPORT_C void UpdateL( - TUint32 aTimeout = 0, - CDesC8Array* aHeaders = 0, - HBufC8* aContentType = 0, - HBufC8* aContent = 0, - CDesC8Array* aContentHeaders = 0 ); - - /** - * Terminates established session. - * @pre State() == CMceSession::EEstablished - * @post State() == CMceSession::ETerminating - * @param aHeaders, SIP headers to be added. Ownership is - * transferred. - * @param aContentType, content type of the body. - * Ownership is transferred. - * @param aContent, content to be added in body. Ownership is - * transferred. - */ - IMPORT_C void TerminateL( CDesC8Array* aHeaders = 0, - HBufC8* aContentType = 0, - HBufC8* aContent = 0 ); - - /** - * Returns the streams belonging to the session. - * @return streams of the session. - */ - IMPORT_C const RPointerArray& Streams() const; - - /** - * Returns the recipient of the session. - * @pre State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @return The recipients address. - */ - IMPORT_C const TDesC8& Recipient() const; - - /** - * Returns the originator of the session. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @return the originators address. - */ - IMPORT_C const TDesC8& Originator() const; - - /** - * Configures session by updating SDP session lines. - * In order to get complete update, whole session must be - * updated causing sending of re-invite. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @pre aSessionSDPLines != 0 - * @param aSessionSDPLines, application specific SDP lines for session. - * Ownership is transferred. - */ - IMPORT_C void SetSessionSDPLinesL( CDesC8Array* aSessionSDPLines ); - - /** - * Gets SDP lines of the session. - * @return array of session SDP lines, owneship is transferred. - */ - IMPORT_C MDesC8Array* SessionSDPLinesL(); - - /** - * Returns the session timer value of the session. - * @return the session timer value. - */ - IMPORT_C TUint32 SessionTimer() const; - - /** - * Adds grouped media streams to the session. Changes SDP - * of the session. In order to get complete update, whole - * session must be updated causing sending of re-invite. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @pre aBundle != 0 - * @param aBundle group of media streams; - * ownership of the bundle is transferred - */ - IMPORT_C void AddBundleL( CMceStreamBundle* aBundle ); - - /** - * Removes grouped media stream from session. Changes SDP - * of the session. In order to get complete update, whole - * session must be updated causing sending of re-invite. - * @pre State() == CMceSession::EIdle || - * State() == CMceSession::EIncoming || - * State() == CMceSession::EEstablished - * @post aBundle cannot be used anymore and contents of - * previously returned bundle array (CMceSession::Bundles()) - * are not anymore valid - * @param aBundle bundle to be removed - */ - IMPORT_C void RemoveBundleL( CMceStreamBundle& aBundle ); - - /** - * Gets the grouped media streams of the session. - * @return bundles of the session - */ - IMPORT_C const RPointerArray< CMceStreamBundle >& Bundles() const; - - /** - * Gets session modifier of type TUint. - * @param aModifier is a modifier to be retrieved - * @param aValue on return will contain modifier value - * @leave KErrNotFound if modifier is not found - */ - IMPORT_C void GetModifierL( TMceSessionModifier aModifier, - TUint& aValue ) const; - - /** - * Sets session modifier of type TUint. - * @param aModifier is a modifier to be set - * @param aValue is a new value of a modifier - * @leave KErrNotFound if modifier is not found - */ - IMPORT_C void SetModifierL( TMceSessionModifier aModifier, - TUint aValue ); - - /** - * Returns the identifier of profile used by the sesison. - * @return TUint32 Identifier of the used profile. 0, - * if session is setup without profile. - */ - IMPORT_C TUint32 Profile() const; - - - public: - - CMceManager& Manager() const; - - // Restarts the simulator - void RestartSimulator(); - - protected: - - /** - * C++ default constructor. - * @param aManager, reference to session manager. - * @param aProfileId, id of the sip profile used for the session. - */ - CMceSession( CMceManager* aManager, TUint32 aProfileId ); - - /** - * second-phase constructor - */ - void ConstructL(); - - /** - * Initializes - */ - void InitializeL(); - - - protected: // Not owned data - - /** - * profile id - */ - TUint32 iProfileId; - - private: // Owned data - - /** - * media streams - */ - RPointerArray iMediaStreams; - - /** - * bundles - */ - RPointerArray iBundles; - - //for testing - - //friend class CMceManager; - - public: // stub data - - CMceManager* iManager; - - CMceSession::TState iState; - - TBool iIsConnectionActive; - - HBufC8* iOriginator; - - HBufC8* iRecipient; - - TUint32 iTimeout; - - CDesC8Array* iSessionSDPLines; - - CDesC8Array* iHeaders; - - TBool iForceInternetSignaling; - - TUint i100RelUsage; - - // If this code is != KErrNone, next operation that can fail will fail - // (leave or return a value) with this code. Variable is reseted before - // failing. - // Obs! Check that wanted failing is really implemented in this stub - TInt iFailWithCode; - - TBuf8<200> iReasonPhrase; - - TInt iReasonCode; - }; - -#endif