multimediacommsengine/tsrc/MMCTestDriver/MCETester/inc/TTcMCECommandBase.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommsengine/tsrc/MMCTestDriver/MCETester/inc/TTcMCECommandBase.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,210 @@
+/*
+* 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:    See class definition below.
+*
+*/
+
+
+
+#ifndef __TTCMCECOMMANDBASE_H__
+#define __TTCMCECOMMANDBASE_H__
+
+// INCLUDES
+#include "TTcCommandBase.h"
+#include "CTcMCEContext.h"
+
+
+// FORWARD DECLARATIONS
+
+
+
+// CLASS DEFINITION
+/**
+ * TTcSIPCommandBase implements the base class for all SIP commands.
+ * It provides common SIP related functionality for
+ * accessing request and creating responses.
+ */
+class TTcMceCommandBase
+	: public TTcCommandBase
+	{
+	protected:	// Constructors and destructor
+
+		/**
+		 * Constructor.
+		 *
+		 * @param aContext SIP test context
+		 */
+		TTcMceCommandBase( MTcTestContext& aContext );
+
+	protected: // New methods
+
+		// Add here parameter extraction functions when needed
+		
+		/**
+         * Extracts profileId and returns it as a integer
+         *
+         * @return profileId
+         */
+		TInt ExtractProfileIdL();
+		
+		/**
+		 * Extracts array from CTRL request
+		 *
+		 * @param aName Name of the array to be extracted.
+		 * @param aIsMandatory ETrue if the object is required.
+		 * @return Pointer to array. Null if not found
+		 *         and object is not required. Ownership is transferred.
+		 * @exceptions Leaves with KTcErrMandatoryParameterNotFound if the 
+		 *			   object is required but cannot be found.
+		 */
+		CDesC8Array* ExtractArrayL(const TDesC8& aName, 
+								   TBool aIsMandatory = ETrue);
+		
+		/**
+		 * Extracts SIP headers from CTRL request
+		 *
+		 * @param aIsMandatory ETrue if the headers are required.
+		 * @return Pointer to array including headers. Null if not found
+		 *         and headers are not required. Ownership is transferred.
+		 * @exceptions Leaves with KTcErrMandatoryParameterNotFound if headers 
+		 *			   are required but cannot be found.
+		 */
+		CDesC8Array* ExtractHeadersL(TBool aIsMandatory = ETrue);
+
+		/**
+		 * Converts any TPtrC8 to HBufC*
+		 *
+		 * @param ptr Descriptor to be converted
+		 * @return Converted descriptor. Null if param is not a valid pointer.
+		 *         Ownership is transferred.
+		 */
+		HBufC8* HBufCParameterL( TPtrC8 ptr );
+
+		/**
+		 * Returns the default profile, or a user defined profile
+		 * if a RegistryId is present in the CTLR request.
+		 *
+		 * @return Reference to a profile container.
+		 */
+		CTcMCEProfileContainer& SelectProfileL();
+		
+		/**
+		 * Searches for a ProfileId field from the CTRL request. Fetches
+		 * the associated Profile object from the test context's
+		 * profile registry.
+		 *
+		 * @param aIsMandatory ETrue if the object is required.
+		 * @return reference to Profile object or leaves if profile for wanted
+		 *         id is not found
+		 * @exceptions Leaves with KTcErrMandatoryIdNotFound if
+		 *			   a required object or object id cannot be found.
+		 */
+		CSIPProfile& GetProfileL( CTcMCEProfileContainer& aProfileContainer );
+
+	
+		// Response creation functions
+
+		/**
+		 * Try to find an existing TestClientIds structure from the
+		 * CTRL response. Create one if it cannot be found and add
+		 * all possible Id items to it.
+		 *
+		 * @return Reference to the structure parameter containing
+		 *		   pre-created TestClient Ids.
+		 */
+		CTcStructure& FindCreateTestClientIdsL();
+
+		/**
+		 * Adds a TestClientId item to the CTRL response. Ownership is
+		 * is transferred.
+		 *
+		 * NOTE!! This function uses CleanupStack for safe array insertion.
+		 * You must not call CleanupStack::PushL()/Pop() when calling this!!
+		 *
+		 * @param aName Id name (e.g. "RequestId")
+		 * @param aObject Id of this object is looked up from the registry
+		 *				  and added to the response. aObject is registered
+		 *				  if it's not already in the registry.
+		 */
+		void AddIdResponseL( const TDesC8& aName, const CBase* aObject );
+
+        /**
+		 * Adds a TestClientId item to the CTRL response. Ownership is
+		 * is NOT transferred.
+		 *
+		 * @param aName Id name (e.g. "RequestId")
+		 * @param aObject Id of this object is looked up from the registry
+		 *				  and added to the response. aObject is registered
+		 *				  if it's not already in the registry.
+		 */
+        void AddIdResponseL( const TDesC8& aName, const CBase& aObject );
+		 
+		/**
+		 * Adds headers to CTRL response. Ownership is NOT transferred.
+		 * @param aHeaders Headers to be added to response.
+		 */
+		void AddHeadersL( const CDesC8Array* aHeaders );
+		  
+		/*
+		 * Adds session state enumeration's textual correspondent to response
+		 *
+		 * @param aState State, which textual correspondent is added to response
+		 */
+		void AddTextualSessionStateL( TInt aState );
+
+		/*
+		 * Adds stream state enumeration's textual correspondent to response
+		 *
+		 * @param aState State, which textual correspondent is added to response
+         * @param aBound If ETrue, param's name is "StreamStateText", else
+         *               "BoundStreamStateText"
+		 */
+		void AddTextualStreamStateL( TBool aState, TBool aBound );
+
+
+		/*
+		 * Adds media stream state enumeration's textual correspondent to response
+		 *
+		 * @param aState State, which textual correspondent is added to response         
+		 */
+		 void AddTextualMediaStreamStateL( TInt aState );
+
+			
+				
+		/*
+		 * Adds event state enumeration's textual correspondent to response
+		 *
+		 * @param aState State, which textual correspondent is added to response
+		 */
+		void AddTextualEventStateL( TInt aState );
+
+		/*
+		 * Adds refer state enumeration's textual correspondent to response
+		 *
+		 * @param aState State, which textual correspondent is added to response
+		 */
+		void AddTextualReferStateL( TInt aState );
+
+
+	protected:	// Data
+
+		/// Reference to the MCE test context. Not owned.
+		CTcMCEContext& iContext;
+
+		/// CleanupStack push count
+		TInt iPushed;
+
+	};
+
+#endif // __TTCMCECOMMANDBASE_H__