realtimenetprots/sipfw/ProfileAgent/profile_fsm/src/Sipprflinitstate.cpp
changeset 0 307788aac0a8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/realtimenetprots/sipfw/ProfileAgent/profile_fsm/src/Sipprflinitstate.cpp	Tue Feb 02 01:03:15 2010 +0200
@@ -0,0 +1,147 @@
+// 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        : sipprflinitstate.cpp
+// Part of     : sip profile fsm
+// implementation
+// Version     : %version: 2.1.1 %
+//
+
+
+
+// INCLUDE FILES
+#include	"sipprflinitstate.h"
+#include	"sipprofileagentobserver.h"
+#include	"sipmessageelements.h"
+#include	"sipregistrationbinding.h"
+#include	"sipclienttransaction.h"
+#include	"sipprflinitstate.h"
+#include	"sipprflregisterrequestedstate.h"
+#include	"sipprflregistrationinprogressstate.h"
+#include	"sipprflregisteredstate.h"
+#include	"sipprflderegistrationinprogressstate.h"
+#include	"sipprflderegisterrequestedstate.h"
+#include	"sipprflstatebase.h"
+#include    "sipprofilefsmuser.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::NewL()
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPPrflInitState* CSIPPrflInitState::NewL(MSIPProfileFSMUser& aUser)
+	{
+	return new (ELeave) CSIPPrflInitState(aUser);
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::CSIPPrflInitState
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CSIPPrflInitState::CSIPPrflInitState(MSIPProfileFSMUser& aUser) 
+    : CSIPPrflStateBase(aUser,MSIPProfileContext::EInit)
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::CSIPPrflInitState
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSIPPrflInitState::~CSIPPrflInitState()
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::LinkStates()
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CSIPPrflInitState::LinkStates(
+    CSIPPrflStateBase& aResolvingProxiesState,
+	CSIPPrflStateBase& aRegisterRequestedState,
+	CSIPPrflStateBase& aRegistrationInProgressState)
+	{
+	iResolvingProxies = &aResolvingProxiesState;
+	iRegisterRequested = &aRegisterRequestedState;
+	iRegistrationInProgress = &aRegistrationInProgressState;
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::ConcreteProfileState()
+// -----------------------------------------------------------------------------
+//
+CSIPConcreteProfile::TStatus CSIPPrflInitState::ConcreteProfileState() const
+    {
+    return CSIPConcreteProfile::EUnregistered;
+    }
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::RegisterL()
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CSIPPrflInitState::RegisterL(
+	MSIPProfileContext& aContext)
+	{
+	__ASSERT_ALWAYS(
+	    aContext.Connection().State() != CSIPConnection::EUnavailable, 
+		User::Leave (KErrCouldNotConnect));
+	__ASSERT_DEBUG(aContext.Profile()!=0, User::Invariant());
+	
+	if (aContext.IsProxyResolvingEnabled() && 
+	    !aContext.ProxiesAlreadyResolved())
+	    {
+	    aContext.ResolveProxyL();
+	    aContext.SetNextState(*iResolvingProxies);
+	    }
+	else
+	    {
+	    if (aContext.Connection().State() == CSIPConnection::EActive)
+		    {
+		    if (!aContext.Registration())
+		        {
+		        aContext.CreateRegistrationL();
+		        }
+		    CSIPMessageElements* elems = aContext.CreateMsgElementsLC();
+		    aContext.SetTransaction(aContext.Registration()->RegisterL(elems));
+		    if (elems)
+			    {
+			    CleanupStack::Pop(elems);
+			    }
+		    aContext.SetNextState(*iRegistrationInProgress);
+		    }
+	    else
+		    {
+		    aContext.SetNextState(*iRegisterRequested);
+		    }
+	    }
+	}
+
+// -----------------------------------------------------------------------------
+// CSIPPrflInitState::IsIdle
+// From MSIPProfileFSMUser
+// -----------------------------------------------------------------------------
+//
+TBool CSIPPrflInitState::IsIdle(
+    MSIPProfileContext& aContext)
+    {
+    if (!aContext.Profile())
+    	{
+    	return ETrue;
+    	}
+    return !( iUser.IsInQueue( *aContext.Profile() ) );
+	}