diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcesrv/mmceserver/inc/mcecssessionimplementation.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcesrv/mmceserver/inc/mcecssessionimplementation.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,229 @@ +/* +* 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 CMCECSESSIONIMPLEMENTATION_H +#define CMCECSESSIONIMPLEMENTATION_H + +#include + +#include "mcesrv.h" +#include "mceclientserver.h" +#include "mcecomaudiocodec.h" +#include "mcecomvideocodec.h" + +// FORWARD DECLARATION +class CMceCsSession; +class CMceSipManager; +class TMceIds; +class CMceCsSubSession; +class CMceSipDefaults; +class TMceFileInfo; +class TMceMccComEvent; + +// CLASS DECLARATION + + +/** +* MCE CS session implementation +* +* @lib +* @since +*/ +class CMceCsSessionImplementation : public CBase + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aManager SIP manager + * @param aITCProvider provides ITC functionality. Ownership is NOT transferred + * @return CS session implementation + */ + static CMceCsSessionImplementation* NewL( CMceSipManager& aManager, + CMceCsSession* aITCProvider ); + + /** + * Two-phased constructor. + * @param aManager SIP manager + * @param aITCProvider provides ITC functionality. Ownership is NOT transferred + * @return CS session implementation + */ + static CMceCsSessionImplementation* NewLC( CMceSipManager& aManager, + CMceCsSession* aITCProvider ); + + /** + * Destructor. + */ + ~CMceCsSessionImplementation(); + + +public: // New + + + /** + * Creates sub session + * @param aIds set of ids defining ITC call context + * @param aParams parameters for creation + */ + void CreateSubSessionL( TMceIds& aIds, + CDesC8Array& aParams); + + /** + * Removes sub session + * @param aSessionId aSessionID + */ + void RemoveSubSessionL( TUint32 aSessionId ); + + /** + * Gets all sub sessions + * @return all sub sessions + */ + RPointerArray& SubSessions(); + + /** + * Finds sub session based on session id + * @param aSessionId session id + * @return sub session + */ + CMceCsSubSession* SubSessionL( TUint32 aSessionId ); + + /** + * Finds sub session based on dialog id + * @param aDialogId dialog id + * @return sub session + */ + const CMceCsSubSession* FindSubSession( TUint32 aDialogId ); + + /** + * Returns supported audio codecs + * @return supported audio codecs as encoded string + */ + HBufC8* SupportedAudioCodecsL(); + + /** + * Returns supported video codecs + * @return supported video codecs as encoded string + */ + HBufC8* SupportedVideoCodecsL(); + + /** + * Stores default headers for given methods. + * @param aMethod the methods + * @param aHeaders the default headers + */ + void StoreDefaultHeadersL( CDesC8Array& aMethods, CDesC8Array* aHeaders ); + + /** + * Returns the default headers for the given method + * @param aMethodInd the method index in SIP Strings + * @return default headers + */ + CDesC8Array& DefaultHeaders( TInt aMethodInd ); + + /** + * Returns the encoded default headers for the given method + * @param aMethod the method + * @return encoded default headers + */ + HBufC8* DefaultHeadersL( TDesC8& aMethod ); + + void DoServiceL( TMceIds& aIds, TInt aFunction, TPtr8& aInfo ); + + void DoServiceL( TMceIds& aIds, TInt aFunction, const TDesC8& aInfo ); + + HBufC8* DoServiceL( TMceIds& aIds, TInt aFunction ); + + void DoServiceL( TMceIds& aIds, TInt aFunction, CMceMsgBase& aMessage ); + + void StoreClientContent( HBufC8* aClientContent ); + + /** + * Callback function to indicate that event has been received + * @param aEvent, received event + */ + void EventReceived( TMceMccComEvent& aEvent ); + + +public: + + + /** + * Sends data via callback mechanism to client + * @param aIds set of ids defining ITC callback context + * @param aContext encoded context of message + * @param aContent content of message + */ + void SendToClientL( TMceIds& aIds, HBufC8* aContext, HBufC8* aContent ); + + /** + * Removes all subsession + * @param aMakeOrphan if ETrue, makes subsession orphan, + * if session do not terminate + */ + void RemoveAllSubSessions( TBool aMakeOrphan = ETrue ); + + /** + * Returns ETrue, if session implementation is orphan + * @return ETrue, if orphan + */ + TBool IsOrphan(); + + /** + * Returns reference to CS session + * @return CS session + */ + CMceCsSession& ClientSession(); + + + +protected: + + + CMceCsSessionImplementation ( CMceSipManager& aManager, CMceCsSession& aITCProvider ); + void ConstructL (); + static void ArrayCleanup(TAny* aArray); + + void GetFileInfoL( TMceIds& aIds, TMceFileInfo& aFileInfo ); + + +private: // Owned data + + //sub sessions + RPointerArray iSubSessions; + //default headers + CMceSipDefaults* iDefaults; + + +private: // NOT owned Data + + //SIP manager instance + CMceSipManager& iManager; + //ITC provider + CMceCsSession* iITCProvider; + + //definitions for unit testing + MCESRV_UT_DEFINITIONS + + }; + + +#endif + +// End of File