ipappsrv_plat/comms_event_api/inc/mceoutrefer.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipappsrv_plat/comms_event_api/inc/mceoutrefer.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,172 @@
+/*
+* 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 CMCEOUTREFER_H
+#define CMCEOUTREFER_H
+
+//  INCLUDES
+#include <mceoutevent.h>
+#include <mcerefer.h>
+
+// FORWARD DECLARATIONS
+class CSIPProfile;
+
+// CLASS DECLARATION
+
+/**
+* Class for mobile originated MCE refers.
+*
+* CMceOutRefer represents outgoing request to remote terminal to perform an action.
+* This request may or may not also implicitically generate an event. This is
+* indicated by type while instantiating the class. If event is generated, instance
+* of CMceOutEvent is returned in ReferL function call. This will lead to notifications
+* send by remote terminal received through MMceEventObserver::NotifyReceived() function.
+*
+* The refer is finally terminated by the remote endpoint.
+*
+* If for any reason instance of this class is deleted while in active state,
+* refer is automatically terminated by MCE server.
+*
+*  @lib mceclient.lib
+*/
+class CMceOutRefer: public CMceRefer
+    {
+    public:  // Constructors and destructor
+        
+		/**
+        * Two-phased constructor.
+		* @param aManager, reference to event manager
+        * @param aProfile, reference to used SIP profile
+	    * @param aRecipient, recipient of the refer.
+		* @param aReferTo, value placed into refer-to header.
+		* @param aType, type of the refer.
+	    * @param aOriginator, originator of the refer.
+        */
+        IMPORT_C static CMceOutRefer* NewL(
+									 CMceManager& aManager,
+									 CSIPProfile& aProfile,
+									 const TDesC8& aRecipient,
+					 				 const TDesC8& aReferTo,
+									 TType aType = ENoSuppression,
+									 HBufC8* aOriginator = 0 );
+
+        /**
+	    * Two-phased constructor. Should be used when refer is associated
+	    * to existing event. This guarantees that refer is sent
+	    * to same remote terminal with the event.
+		* @param aEvent,  reference to bound event.
+		* @param aReferTo, value placed into refer-to header.
+		* @param aType, type of the refer.
+        */
+        IMPORT_C static CMceOutRefer* NewL(
+									 CMceEvent& aEvent,
+					 				 const TDesC8& aReferTo,
+									 TType aType = ENoSuppression );
+
+        /**
+	    * Two-phased constructor. Should be used when refer is associated
+	    * to existing session. This guarantees that refer is sent
+	    * to same remote terminal with the session.
+		* @param aSession, reference to bound session
+		* @param aReferTo, value placed into refer-to header.
+		* @param aType, type of the refer.
+        */
+        IMPORT_C static CMceOutRefer* NewL(
+								 	 CMceSession& aSession,
+					 				 const TDesC8& aReferTo,
+									 TType aType = ENoSuppression );
+
+        /**
+	    * Two-phased constructor. Should be used when refer is associated
+	    * to existing refer. This guarantees that refers are sent
+	    * to same remote terminal.
+		* @param aRefer, reference to bound refer
+		* @param aReferTo, value placed into refer-to header.
+		* @param aType, type of the refer.
+        */
+        IMPORT_C static CMceOutRefer* NewL(
+								 	 CMceRefer& aRefer,
+					 				 const TDesC8& aReferTo,
+									 TType aType = ENoSuppression );
+									 
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CMceOutRefer();
+
+
+    public: // New functions
+              
+		/**
+		* Refers to ongoing session.
+	    * @pre State() == CMceRefer::EIdle
+	    * @post State() == CMCRefer::EPending	    
+		* @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 a body. Ownership is transferred.
+	    */
+		IMPORT_C CMceOutEvent* ReferL(
+					 CDesC8Array* aHeaders = 0, 
+					 HBufC8* aContentType = 0,
+					 HBufC8* aContent = 0 ); 
+					 
+    public: // Functions from base class
+        
+        /**
+        * Returns truth value, is the refer in-refer or not.
+        * @return TBool, EFalse.
+        */
+        TBool IsInRefer() const;
+  	
+    private: 
+	    
+	    /**
+        * C++ default constructor.
+        * @param aManager, reference to event manager.
+        * @param aProfileId, id of the sip profile used for the event,
+        * @param aDialogId, the ID of the dialog this REFER
+        *                   is created into
+        * @param aType
+        */
+	    CMceOutRefer( CMceManager& aManager, 
+                      TUint32 aProfileId,
+                      TUint32 aDialogId,
+                      TType aType );
+	   
+	    /**
+        * second-phase constructor
+        */
+	    void ConstructL(const TDesC8& aRecipient,
+            	        const TDesC8& aReferTo,
+            	        TType aType,
+            	        HBufC8* aOriginator );
+	    /**
+        * second-phase constructor
+        */
+	    void ConstructL(const TDesC8& aRecipient,
+            	        const TDesC8& aReferTo,
+            	        TType aType,
+            	        const TDesC8& aOriginator );
+
+    };
+
+#endif