diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/ProfileAgent/PluginMgr/api/sipprofileagent.h --- /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 +#include +#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