--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ProfileAgent/IETF_Agent/inc/sipietfprofileagent.h Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,262 @@
+/*
+* Copyright (c) 2003-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 : sipietfprofileagent.h
+* Part of : sip ietf1 agent
+* Interface : private
+* Version : 1.0
+*
+*/
+
+
+
+
+/**
+ @internalComponent
+*/
+
+#ifndef CSIPIETFPROFILEAGENT_H
+#define CSIPIETFPROFILEAGENT_H
+
+// INCLUDES
+#include <e32base.h>
+#include "sipprofileagent.h"
+#include "sipprofileagentobserver.h"
+#include "sipprofilefsmuser.h"
+#include "sipobserver.h"
+#include "siphttpdigestchallengeobserver2.h"
+#include <sipprofileagentextensionparams.h>
+
+
+//FORWARD DECLARATIONS
+class CSIP;
+class CSIPHttpDigest;
+class TSIPProfileTypeInfo;
+class CSIPIetfConnectionContext;
+class CSIPPrflInitState;
+class CSIPPrflResolvingProxiesState;
+class CSIPPrflRegisterRequestedState;
+class CSIPPrflRegistrationInProgressState;
+class CSIPPrflRegisteredState;
+class CSIPPrflDeregisterRequestedState;
+class CSIPPrflDeregistrationInProgressState;
+class CSIPPrflRegisterDelayRequestedState;
+class CSIPIetfProfileContext;
+class CSIPProfileQueueHandling;
+
+// CLASS DECLARATION
+/**
+* Registers profiles and maintains
+* profile registrations as per RFC3261.
+*
+* @lib n/a
+*/
+class CSIPIetfProfileAgent:
+ public CSIPProfileAgent,
+ public MSIPProfileAgentObserver,
+ public MSIPProfileFSMUser,
+ public MSIPObserver,
+ public MSIPHttpDigestChallengeObserver2
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aInitParams parameters passed in the construction
+ */
+ static CSIPIetfProfileAgent* NewL(TAny* aInitParams);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CSIPIetfProfileAgent();
+
+ public: // From CSIPProfileAgent
+
+ const TSIPProfileTypeInfo& Type() const;
+
+ CSIPConcreteProfile* CreateL();
+
+ void RegisterL(
+ CSIPConcreteProfile& aSIPConcreteProfile);
+
+ void UpdateL(
+ CSIPConcreteProfile& aNewProfile,
+ CSIPConcreteProfile& aOldProfile);
+
+ void DeregisterL(
+ CSIPConcreteProfile& aSIPConcreteProfile);
+
+ TInt GetProfileState(
+ CSIPConcreteProfile::TStatus& aState,
+ CSIPConcreteProfile& aProfile) const;
+
+ TBool IsIdle();
+
+ TBool RegisterPending(CSIPConcreteProfile& aSIPProfile) const;
+
+ TInt TerminateHandling(CSIPConcreteProfile& aProfile);
+
+ TInt Extension(TInt aOperationCode, TAny* aParams);
+
+ public: // From MSIPProfileAgentObserver
+
+ void SIPProfileStatusEvent(
+ CSIPConcreteProfile& aProfile,
+ TUint32 aContextId);
+
+ void SIPProfileErrorEvent(
+ CSIPConcreteProfile& aProfile,
+ TInt aError);
+
+ TBool ProceedRegistration(CSIPConcreteProfile& aProfile, TInt aError);
+
+ void GetFailedProfilesL(
+ const TSIPProfileTypeInfo& aType,
+ RPointerArray<CSIPConcreteProfile>& aFailedProfiles) const;
+
+
+ public: // From MSIPProfileFSMUser
+
+ void RegisterProfileL(
+ CSIPConcreteProfile& aSIPConcreteProfile);
+
+ void DeregisterProfileL(
+ CSIPConcreteProfile& aSIPConcreteProfile);
+
+ void RetryProfileRegistrationL(
+ CSIPConcreteProfile& aSIPProfile );
+
+ TBool AddProfileIntoQueue(
+ CSIPConcreteProfile& aSIPConcreteProfile ) const;
+
+ void RegisterProfileAfterQueueL(
+ CSIPConcreteProfile& aSIPConcreteProfile );
+
+ void DeregisterProfileAfterQueueL(
+ CSIPConcreteProfile& aSIPConcreteProfile );
+
+ void RetryProfileRegistrationAfterQueueL(
+ CSIPConcreteProfile& aSIPConcreteProfile );
+
+ TBool IsInQueue(
+ CSIPConcreteProfile& aSIPProfile ) const;
+
+ void SetInterimProfile( CSIPConcreteProfile*
+ aSIPConcreteProfile );
+
+ public: // From MSIPObserver
+
+ void IncomingRequest(
+ TUint32 aIapId,
+ CSIPServerTransaction* aTransaction);
+
+ void TimedOut(CSIPServerTransaction& aTransaction);
+
+ public: // From MSIPHttpDigestChallengeObserver2
+
+ void ChallengeReceived(const CSIPClientTransaction& aTransaction);
+
+ void ChallengeReceived(const CSIPRefresh& aRefresh);
+
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CSIPIetfProfileAgent(TSIPProfileAgentInitParams* aInitParams);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+
+ private: // New functions
+
+ /**
+ * Provides profile context
+ * @param aProfile a profile
+ * @return a profile context
+ */
+ CSIPIetfProfileContext& ProvideProfileContextL(CSIPConcreteProfile& aProfile);
+
+ /**
+ * Finds profile context
+ * @param aSIPConcreteProfile a profile
+ * @return profile context, the ownership is not transferred
+ */
+ CSIPIetfProfileContext* FindProfileContext(CSIPConcreteProfile& aSIPConcreteProfile) const;
+
+ /**
+ * Finds profile context
+ * @param aProfileId identifier of the profile
+ * @return profile context, the ownership is not transferred
+ */
+ CSIPIetfProfileContext* FindProfileContext(TUint32 aProfileId) const;
+
+ /**
+ * Finds connection context
+ * @param aPriofile a profile
+ * @return a connection context
+ */
+ CSIPIetfConnectionContext* FindConnectionContext(CSIPConcreteProfile& aProfile) const;
+
+ /**
+ * Finds connection context
+ * @param aIapId a iap id
+ * @return a connection context
+ */
+ CSIPIetfConnectionContext* FindConnectionContext( TUint32 aIapId ) const;
+
+ /**
+ * Destroys idle connection contexts
+ */
+ void CleanIdleConnectionContexts();
+
+ TBool DeregisterToWaitingQueueL( CSIPIetfProfileContext* aContext );
+
+
+ void RegisterQueue( CSIPConcreteProfile& aProfile, TBool aReportError );
+
+ TBool AllowedTakeFromQueue( CSIPConcreteProfile& aSIPConcreteProfile );
+
+
+ private: // Data
+
+ CSIP* iSIP;
+ CSIPHttpDigest* iHttpDigest;
+ MSIPProfileAgentObserver& iSIPProfileAgentObserver;
+ CDeltaTimer& iDeltaTimer;
+ TSIPProfileTypeInfo iType;
+ CSIPPrflInitState* iInit;
+ CSIPPrflResolvingProxiesState* iResolvingProxies;
+ CSIPPrflRegisterRequestedState* iRegRequested;
+ CSIPPrflRegistrationInProgressState* iRegInProgress;
+ CSIPPrflRegisteredState* iRegistered;
+ CSIPPrflDeregisterRequestedState* iDeregRequested;
+ CSIPPrflDeregistrationInProgressState* iDeregInProgress;
+ CSIPPrflRegisterDelayRequestedState* iRegDelayRequested;
+ RPointerArray<CSIPIetfConnectionContext> iConnectionCtxArray;
+ CSIPProfileQueueHandling* iProfileQueueHandling;
+ CSipProfileAgentConfigExtension* iConfigExtension;//not owned
+
+
+#ifdef CPPUNIT_TEST
+ friend class CSIPIetfProfileAgentTest;
+#endif
+ };
+
+#endif CSIPIETFPROFILEAGENT_H