mmsharing/mmshavailability/inc/musavasip.h
changeset 0 f0cf47e981f9
child 32 73a1feb507fb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/inc/musavasip.h	Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,316 @@
+/*
+* Copyright (c) 2005-2006 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:  This is client interface class for SIP-server 
+*  Version     : %version: 23 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+#ifndef __MUSAVASIP_H__
+#define __MUSAVASIP_H__
+
+//  INCLUDES
+
+#include "musunittesting.h"
+
+#include <e32base.h>
+#include <sip.h>
+
+class CMusAvaSipConnectionObserver;
+class CMusAvaSipObserver;
+class CMusAvaSipProfileRegistryObserver;
+class CSIP;
+class CSIPProfile;
+class CSIPProfileRegistry;
+class MMusAvaSipConnectionAdapter;
+class MMusAvaSipProfileRegistryAdapter;
+class MSIPConnectionObserver;
+class MMusAvaSipAdapter;
+class CSIPProfileRegistryBase;
+class CMusAvaClientResolverUtil;
+
+/**
+ *  CMusAvaSip class represent the interface for module fetcher.
+ *
+ *  This interface class encapsulates module selection for availability Plug-in.
+ *
+ *  @lib musavailabilityplugin.lib
+
+ */
+
+class CMusAvaSip : public CBase
+	{
+public:
+   
+   	/**
+     * Two-phased constructor
+     *
+     * @since S60 v3.2
+     * @param aCMusAvaSharedObj Pointer to CMusAvaSharedObject
+     * @return Returns pointer to CMusAvaSip object
+     */
+	static CMusAvaSip* NewL();
+	
+	/**
+     * Destructor
+     *
+
+     * @param 
+     * @return 
+     */
+
+	~CMusAvaSip();
+	
+	protected:
+	
+	/**
+     * Constructor
+     *
+     * @since S60 v3.2
+     * @param aCMusAvaSharedObj Pointer to CMusAvaSharedObject
+     * @return 
+     */
+
+	CMusAvaSip();
+	
+    /**
+     * Perform the second phase construction of a
+     *             CMusAvaSip object
+     *
+     * @since S60 v3.2
+     * @param 
+     * @return 
+     */
+
+	void ConstructL();
+	
+public:
+    /**
+     *  
+     *
+	 * @param 
+     */
+    void AddAdapterL( MMusAvaSipProfileRegistryAdapter& aAdapter );
+
+    /**
+     *  
+     *
+	 * @param 
+     */
+    void RemoveAdapter( MMusAvaSipProfileRegistryAdapter& aAdapter );	 
+
+    /**
+     *  
+     *
+	 * @param 
+     */
+    void AddAdapterL( MMusAvaSipConnectionAdapter& aAdapter, TInt aIndex = KErrNotFound );
+
+	 /**
+     * Returns CSip object 
+     *
+	 * @param 
+     */
+    void RemoveAdapter( MMusAvaSipConnectionAdapter& aAdapter );
+	
+    /**
+     *  
+     *
+	 * @param 
+     */
+    void AddAdapterL( MMusAvaSipAdapter& aAdapter, TInt aIndex = KErrNotFound  );
+
+	 /**
+     * Returns CSip object. 
+     *
+	 * @param 
+     */
+    void RemoveAdapter( MMusAvaSipAdapter& aAdapter );
+
+public:	 
+
+	/**
+     * Returns CSIPConnection object. 
+     * Ownership is not transferred.
+     * @param aForceCreation, ETrue if connection should be created
+     * if it does not exists yet.
+	 * @return referense to Sip Object.
+     */
+	CSIPConnection* ConnectionL( TBool aForceCreation = ETrue );
+
+	 /**
+     * Returns CSIPConnection object .
+     * Ownership is not transferred.
+     *
+	 * @return referense to Sip Object.
+     */
+	MSIPConnectionObserver& ConnectionObserver();
+    	
+	 /**
+     * Create Profile object.
+     * 
+	 * return EFalse if Profile was not created, 
+	 * ETrue otherwise.
+     */
+     TBool CreateProfileL();
+     
+     /**
+     * Create CSIPProfile object.
+     * 
+	 * return EFalse if CSIPProfile was not created, 
+	 * ETrue otherwise.
+     */
+     TBool CreateSipProfile();
+    	
+	 /**
+     * Returns CSIPProfile object.
+     * Ownership is not transferred.
+     *
+     * @since  S60 v3.2
+	 * @return referense to Sip Object.
+     */
+    CSIPProfile* Profile();
+
+	 /**
+     * Returns CSIPProfileRegistry object.
+     * Ownership is not transferred.
+     *
+	 * @return reference to Sip Object.
+     */
+    CSIPProfileRegistry& ProfileRegistryL();
+	
+	 /**
+     * Returns a buffer containing the own domain, if profile registered.
+     * Ownership is transferred.
+     *
+	 * @return Pointer to a buffer containing the own domain name.
+     */
+    HBufC* OwnDomainLC();
+    
+    /**
+     * Returns CSip object 
+     * Ownership is not transferred.
+     *
+	 * @return reference to Sip Object.
+     */
+    CSIP& Sip();
+    
+    /**
+     * Returns SipProfileId 
+     *
+	 * @param aSipProfileId on return will contain SipProfileId value
+     * @return KErrNotFound if parameter was not found, KErrNone otherwise.
+     */
+    TInt SipProfileId( TUint32& aSipProfileId );
+    
+    /**
+     * Returns a pointer to utility object that handles special client resolving 
+     * in __VOIP enabled terminals. In __VOIP disabled terminals this will 
+     * return a NULL pointer. This function does not transfer ownership.
+     *
+     * @return Pointer to resolver utility object. Make sure to be prepared 
+     *         that this pointer is NULL.
+     */
+    CMusAvaClientResolverUtil* ClientResolverUtil() const;
+    
+    /**
+    * Deletes unnecessary CSIPConnection   
+    */
+    void DeleteSIPConnection();
+
+
+private:
+	
+	 /**
+     * Create SIPConnection object.
+     * 
+     */  
+	void CreateSIPConnectionL();
+        
+    /**
+     * Gets profile to be used with Mus.
+     *
+     * @param Reference to used profile registry.
+     * @return Pointer to profile meant to be used with Mus. If not possible,
+     *         returns poiner to default profile.  Ownership is transferred.
+     * @leave KErrNotFound if not able to return even default profile.
+     */		
+    CSIPProfile* GetMusProfileL( CSIPProfileRegistryBase& aRegistry );
+    
+    
+private:
+        
+     /**
+     * Pointer to CSIP object.
+     * Owns.
+     */
+	 CSIP* iSip;
+	 
+     /**
+      * 
+      * Owns.
+      */
+	 CSIPConnection* iSipConnection;
+	 
+     /**
+      *
+      * Owns.
+      */
+     CSIPProfile* iSipProfile;
+     
+     /**
+      *
+      * Owns.
+      */
+     CSIPProfileRegistry* iSipProfileRegistry;
+
+     /**
+     * Pointer to CMusAvaSipObserver object.
+     * Owns.
+     */
+     CMusAvaSipObserver* iSipObserver;
+     
+     /**
+     * Pointer to CMusAvaSipConnectionObserver object
+     * Owns.
+     */
+     CMusAvaSipConnectionObserver* iSipConnectionObserver;
+     
+     /**
+     * Pointer to CMusAvaSipProfileRegistryObserver object
+     * Owns.
+     */
+     CMusAvaSipProfileRegistryObserver* iSipProfileRegistryObserver;
+     
+     /**
+     * Pointer to utility object that handles special client resolving in
+     * __VOIP enabled terminals. In __VOIP disabled terminals creation of
+     * this object will fail because of missing UID in CenRep and thus this 
+     * pointer can be NULL. If this object does not exist, standard client
+     * resolving will be used.
+     */
+     CMusAvaClientResolverUtil* iClientResolverUtil;
+     
+     TUint32 iIapId;
+     
+     MUS_UNITTEST( UT_CMusAvaOptionHandler )
+     MUS_UNITTEST( UT_CMusAvaSip )
+     MUS_UNITTEST( UT_CMusAvaRegisterAvailability )
+     MUS_UNITTEST( UT_CMusAvaConnectionMonitor )
+     MUS_UNITTEST( UT_CMusAvaCapabilitySipAgent )
+     MUS_UNITTEST( UT_CMusAvaCapabilityExchange )
+	};
+
+#endif
+