multimediacommsengine/mmcesrv/mmceserver/inc/mcecssessionimplementation.h
changeset 0 1bce908db942
--- /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 <badesca.h>
+
+#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<CMceCsSubSession>& 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<CMceCsSubSession> 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