realtimenetprots/sipfw/ProfileAgent/PluginMgr/api/sipprofileagent.h
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ProfileAgent/PluginMgr/api/sipprofileagent.h	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2007-2009 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:
+* Name        : sipprofileagent.h
+* Part of     : SIP / SIP Profile Agent
+* Version     : %version: 2.1.1 %
+*
+*/
+
+
+
+#ifndef CSIPPROFILEAGENT_H
+#define CSIPPROFILEAGENT_H
+
+// INCLUDES
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include "sipprofileagentinitparams.h"
+#include "sipprofiletypeinfo.h"
+#include "sipconcreteprofile.h"
+
+// CLASS DECLARATION
+/**
+* @publishedPartner
+* @released
+*
+* This an abstract class that must be implemented by
+* the actual profile ECom plug-in of the particular type.
+* Class supplies instantiation & destruction by using
+* the ECom framework and SIP profile related functional services.
+*
+* @lib N/A
+*/
+class CSIPProfileAgent : public CBase
+    {
+    public: // Constructors and destructor    
+
+        /** 
+        * Creates an implementation for the given profile type
+        * @param aProfileType a profile type
+        * @param aSIPProfileAgentInitParams
+        * @returns implementation
+        */
+        static CSIPProfileAgent* NewL(
+            const TDesC8& aProfileType,                      
+            TSIPProfileAgentInitParams& aSIPProfileAgentInitParams);
+
+        /**
+        * Destructor
+        */
+        virtual ~CSIPProfileAgent();
+        
+    public: // New functions
+
+        /**
+        * Returns all implementations conformant to this interface
+        * @param aImpInfoArray on return will contain the list of the implementations
+        */
+        static void ListAllImplementationsL(
+            RImplInfoPtrArray& aImplInfoArray);
+
+        /**
+        * Gets profile agent type
+        * @return profile agent type
+        */
+        virtual const TSIPProfileTypeInfo& Type() const = 0;
+
+        /**
+        * Creates new profile prefilled with default values.
+        * Ownership is transferred.
+        * @return new instance of CSIPConcreteProfile
+        */
+        virtual CSIPConcreteProfile* CreateL() = 0;
+
+        /**
+        * Registers SIP profile and maintains the registration. 
+        * Takes actions needed for the registration
+        * according to the profile type.
+        * @param aSIPProfile SIP profile to register
+        */
+        virtual void RegisterL(
+            CSIPConcreteProfile& aSIPProfile) = 0;
+
+        /**
+        * Updates SIP profile registration.
+        * @param aNewProfile SIP profile to update
+        * @param aOldProfile old SIP profile
+        */
+        virtual void UpdateL(
+            CSIPConcreteProfile& aNewProfile, 
+            CSIPConcreteProfile& aOldProfile) = 0;
+
+        /**
+        * Deregisters SIP profile according to the profile type.
+        * @param aSIPProfile SIP profile to deregister
+        */
+        virtual void DeregisterL(
+            CSIPConcreteProfile& aSIPProfile) = 0;
+
+        /**
+        * Gets the profile state
+        * @param aState a returned state of the profile 
+        * @param aSIPProfile a SIP profile 
+        * @return KErrNotFound if not found, otherwise KErrNone
+        */
+        virtual TInt GetProfileState(
+            CSIPConcreteProfile::TStatus& aState,
+            CSIPConcreteProfile& aSIPProfile) const = 0;
+
+        /**
+        * Checks if the plug-in is idle i.e. 
+        * does not handle any registration and can be unloaded. 
+        */
+        virtual TBool IsIdle() = 0;
+
+        /**
+        * Checks whether a registration is pending for the profile.
+        * In other words a REGISTER has been sent 
+        * but a final response has not yet been received.
+        * @param aSIPProfile SIP profile
+        */        
+        virtual TBool RegisterPending( 
+            CSIPConcreteProfile& aSIPProfile) const = 0;
+
+        /**
+        * Terminates abnormally profile handling i.e.
+        * cleans up the reserved resources for the profile and forgets it.
+        * @param aSIPProfile a SIP profile
+        * @return KErrNone if successful; 
+        *         KErrNotFound if the profile is not found
+        */
+        virtual TInt TerminateHandling(
+            CSIPConcreteProfile& aSIPProfile) = 0;
+            
+        /**
+        * For future extensions to avoid source compatibility breaks
+        * @param aOperationCode operation code
+        * @param aParams parameters that depend on the operation code
+        * @return KErrNone, if successful, KErrNotSupported, if not supported,
+        *         otherwise a system wide error code
+        */     
+        virtual TInt Extension(
+            TInt aOperationCode,
+            TAny* aParams) = 0;      
+                           
+    protected:
+
+        inline CSIPProfileAgent();
+
+    private:
+
+        /// Unique instance identifier key
+        TUid iDtor_ID_Key;
+    };
+    
+#include "sipprofileagent.inl"
+
+#endif // CSIPPROFILEAGENT_H