networkcontrol/iptransportlayer/inc/netmcpractivities.h
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/iptransportlayer/inc/netmcpractivities.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,229 @@
+// 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:
+//
+
+#ifndef NETMCPR_ACTIVITIES_H_INCLUDED
+#define NETMCPR_ACTIVITIES_H_INCLUDED
+
+#define SYMBIAN_NETWORKING_UPS
+
+#include <comms-infras/mobilitymcpractivities.h>
+
+#ifdef SYMBIAN_NETWORKING_UPS
+#include <comms-infras/upsmcpractivities.h>
+#endif //SYMBIAN_NETWORKING_UPS
+
+class CNetworkMetaConnectionProvider;
+
+namespace NetMCprActivities
+{
+
+#ifdef DUMMY_MOBILITY_MCPR
+// [TODO] IK remove me when we have a proper mobility mcpr
+enum {
+ECFActivityDummyMobilityActivity = ESock::ECFActivityCustom
+
+#ifdef SYMBIAN_NETWORKING_UPS
+, ECFActivityUpsNoBearer, ECFActivityUpsProviderStatus
+#endif //SYMBIAN_NETWORKING_UPS
+
+};
+
+#endif //DUMMY_MOBILITY_MCPR
+
+#ifdef SYMBIAN_NETWORKING_UPS
+
+#ifndef DUMMY_MOBILITY_MCPR
+enum {
+ECFActivityUpsNoBearer = ESock::ECFActivityCustom, ECFActivityUpsProviderStatus, ECFActivityUpsStatusChange
+};
+#endif //DUMMY_MOBILITY_MCPR
+
+#endif //SYMBIAN_NETWORKING_UPS
+
+DECLARE_ACTIVITY_MAP(netMCprActivities)
+}	// namespace NetMCprActivities
+
+namespace NetMCprLegacyActivities
+{
+
+NONSHARABLE_CLASS(CDeferredSelectionActivity) : public MeshMachine::CNodeActivityBase,
+												protected MeshMachine::AContextStore
+	{
+public:
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+    void ParkReConnectRequestL(const MeshMachine::TNodeContextBase& aContext);
+    void ReDispatchReConnectRequestL(const MeshMachine::TNodeContextBase& aContext);
+    void ReplyToOriginators(Messages::TEErrorRecovery::TErrorRecoveryResponse& aCFMessageSig);
+    ~CDeferredSelectionActivity();
+
+protected:
+    CDeferredSelectionActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+
+public:
+	Messages::TErrContext iOriginalErrContext; //Error context on which this activity started
+	Messages::TNodeId iSelectedMcpr;
+	Messages::TNodeId iTierManager;
+
+protected:
+	typedef MeshMachine::TNodeContext<CCoreMetaConnectionProvider, MCprStates::TContext> TContext;
+
+public:
+
+	//
+	// Default Error handling for mcpr states of CReConnectionActivity
+	template<class TSTATE, class TCONTEXT = TContext>
+	NONSHARABLE_CLASS(TState) : public TSTATE
+	    {
+	public:
+		NETSM_TPL_DECLARE_CTR(TState, NetStateMachine::MState, TCONTEXT)
+
+	    explicit TState(TCONTEXT& aContext)
+	    :	TSTATE(aContext)
+	        {
+	        }
+
+		virtual TBool Accept()
+	    	{
+		Messages::TEBase::TError* msg = Messages::message_cast<Messages::TEBase::TError>(&this->iContext.iMessage);
+	    	if(msg && this->iContext.iNodeActivity != NULL)
+		    	{
+				CDeferredSelectionActivity& ac = static_cast<CDeferredSelectionActivity&>(*this->iContext.iNodeActivity);
+				Messages::TEErrorRecovery::TErrorRecoveryResponse errResp(Messages::TErrResponse(Messages::TErrResponse::EPropagate,ac.iOriginalErrContext.iStateChange.iError,ac.iOriginalErrContext.iMessageId));
+				ac.ReplyToOriginators(errResp);
+		    	ac.SetIdle();
+	    		this->iContext.iMessage.ClearMessageId();
+	    		return EFalse;
+	    		}
+	    	return TSTATE::Accept();
+	    	}
+	    };
+
+	DECLARE_SMELEMENT_HEADER( TAwaitingConnectionStartRecoveryRequest, MCprStates::TAwaitingConnectionStartRecoveryRequest, NetStateMachine::MState, CDeferredSelectionActivity::TContext )
+		virtual TBool Accept();
+	DECLARE_SMELEMENT_FOOTER( TAwaitingConnectionStartRecoveryRequest )
+
+	DECLARE_SMELEMENT_HEADER( TParkReConnectRequestAndFindOrCreateTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TParkReConnectRequestAndFindOrCreateTierManager )
+
+	DECLARE_SMELEMENT_HEADER( TCompleteDeferredSelection, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TCompleteDeferredSelection )
+
+	DECLARE_SMELEMENT_HEADER( TProcessSelectComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TProcessSelectComplete )
+
+	DECLARE_SMELEMENT_HEADER( TJoinServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TJoinServiceProvider )
+
+	DECLARE_SMELEMENT_HEADER( TReDispatchReConnectRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TReDispatchReConnectRequest )
+
+	DECLARE_SMELEMENT_HEADER( TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CDeferredSelectionActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TJoinTierManager )
+	};
+
+} //NetMCprLegacyActivities
+
+namespace NetMCprActivities
+{
+NONSHARABLE_CLASS(CPromptingReSelectActivity) : public MeshMachine::CNodeActivityBase,
+                                   				protected MeshMachine::AContextStore
+	{
+public:
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+    void ParkReConnectRequestL(const MeshMachine::TNodeContextBase& aContext);
+    void ReDispatchReConnectRequestL(const MeshMachine::TNodeContextBase& aContext);
+    void ReplyToOriginators(Messages::TEErrorRecovery::TErrorRecoveryResponse& aCFMessageSig);
+    ~CPromptingReSelectActivity();
+
+protected:
+	CPromptingReSelectActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+
+public:
+	Messages::TErrContext iOriginalErrContext; //Error context on which this activity started
+	Messages::TNodeId iSelectedMcpr;
+	Messages::TNodeId iTierManager;
+
+protected:
+	typedef MeshMachine::TNodeContext<CCoreMetaConnectionProvider, MCprStates::TContext> TContext;
+
+public:
+
+	//
+	// Default Error handling for mcpr states of CReConnectionActivity
+	template<class TSTATE, class TCONTEXT = TContext>
+	class TState : public TSTATE
+	    {
+	public:
+		NETSM_TPL_DECLARE_CTR(TState, NetStateMachine::MState, TCONTEXT)
+
+	    explicit TState(TCONTEXT& aContext)
+	    :	TSTATE(aContext)
+	        {
+	        }
+
+		virtual TBool Accept()
+	    	{
+	    Messages::TEBase::TError* msg = Messages::message_cast<Messages::TEBase::TError>(&this->iContext.iMessage);
+	    	if(msg && this->iContext.iNodeActivity != NULL)
+		    	{
+		    	CPromptingReSelectActivity& ac = static_cast<CPromptingReSelectActivity&>(*this->iContext.iNodeActivity);
+				Messages::TEErrorRecovery::TErrorRecoveryResponse errResp(Messages::TErrResponse(Messages::TErrResponse::EPropagate,ac.iOriginalErrContext.iStateChange.iError,ac.iOriginalErrContext.iMessageId));
+				ac.ReplyToOriginators(errResp);
+		    	ac.SetIdle();
+	    		this->iContext.iMessage.ClearMessageId();
+	    		return EFalse;
+	    		}
+	    	return TSTATE::Accept();
+	    	}
+	    };
+
+	DECLARE_SMELEMENT_HEADER( TAwaitingConnectionStartRecoveryRequest, MCprStates::TAwaitingConnectionStartRecoveryRequest, NetStateMachine::MState, CPromptingReSelectActivity::TContext )
+		virtual TBool Accept();
+	DECLARE_SMELEMENT_FOOTER( TAwaitingConnectionStartRecoveryRequest )
+
+	DECLARE_SMELEMENT_HEADER( TParkReConnectRequestAndFindOrCreateTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TParkReConnectRequestAndFindOrCreateTierManager )
+
+	DECLARE_SMELEMENT_HEADER( TCompletePromptingReSelection, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TCompletePromptingReSelection )
+
+	DECLARE_SMELEMENT_HEADER( TProcessSelectComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TProcessSelectComplete )
+
+	DECLARE_SMELEMENT_HEADER( TJoinServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TJoinServiceProvider )
+
+	DECLARE_SMELEMENT_HEADER( TReDispatchReConnectRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TReDispatchReConnectRequest )
+
+	DECLARE_SMELEMENT_HEADER( TJoinTierManager, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CPromptingReSelectActivity::TContext )
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TJoinTierManager )
+	};
+
+} //NetMCprActivities
+
+#endif // NETMCPR_ACTIVITIES_H_INCLUDED