datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitycpractivities.h
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitycpractivities.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,126 @@
+// 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:
+// Mobility Connection Provider activity declarations.
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MOBILITYCPR_ACTIVITIES_H
+#define MOBILITYCPR_ACTIVITIES_H
+
+#include <comms-infras/ss_mobility_apiext.h>
+#include <comms-infras/corecprstates.h>
+#include <comms-infras/mobilitycprstates.h>
+
+enum TMobilityCprActivities
+    {
+    ECFActivityCprMobility = ESock::ECFActivityCustom + 1,
+    };
+
+class CMobilityConnectionProvider;
+
+namespace MobilityCprActivities
+{
+DECLARE_EXPORT_ACTIVITY_MAP(mobilityCprActivities)
+
+//
+// CMobilityActivity
+
+class CMobilityActivity : public MeshMachine::CNodeRetryActivity
+	{
+private:
+	class TMobilityClientNotReadyMutex
+		{
+	public:
+		static TBool IsBlocked(MeshMachine::TNodeContextBase& aContext);
+		};
+
+	friend class TMobilityPreferenceMutex;
+
+public:
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+    ~CMobilityActivity();
+    void Cancel(MeshMachine::TNodeContextBase& aContext);
+    void SetResponder(ESock::CCommsApiExtResponder& aResponder);
+
+protected:
+	CMobilityActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+	//Cpr::CMobilityActivity has no originators
+	void StartL(MeshMachine::TNodeContextBase& aContext, const Messages::XNodePeerId& aOriginator, const NetStateMachine::TStateTriple& aFirst);
+
+protected:
+	typedef MeshMachine::TNodeContext<CMobilityConnectionProvider, CprStates::TContext> TContext;
+	
+	
+public:
+	TSubSessionUniqueId iClientId;
+	TUint iCurrentAp;
+	TUint iPreferredAp;
+	TBool iIsUpgrade;
+	ESock::CCommsApiExtResponder* iResponder;
+	
+public:
+	static const TInt KWaitForMobility         = 10001;
+    static const TInt KStartHandshake          = 10002;
+
+
+	// Transition tags
+	DECLARE_SMELEMENT_HEADER(TNoTagOrWaitForMobilityBackwards, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
+		virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER(TNoTagOrWaitForMobilityBackwards)
+
+	DECLARE_SMELEMENT_HEADER(TNoTagBackwardsOrRecoverableErrorOrError, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
+		virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER(TNoTagBackwardsOrRecoverableErrorOrError)
+	
+    DECLARE_SERIALIZABLE_STATE(
+        TStartHandshakeOrErrorTagBlockedByClientNotReady,
+        CMobilityActivity::TMobilityClientNotReadyMutex,
+        MeshMachine::TErrorTagOr<MeshMachine::TTag<KStartHandshake | NetStateMachine::EForward> >
+        )
+	
+	DECLARE_SERIALIZABLE_STATE(
+		TNoTagOrErrorTagBlockedByClientNotReady,
+		CMobilityActivity::TMobilityClientNotReadyMutex,
+		MeshMachine::TNoTagOrErrorTag
+		)
+
+	DECLARE_SERIALIZABLE_STATE(
+		TNoTagBackwardsOrRecoverableErrorOrErrorBlockedByClientNotReady,
+		CMobilityActivity::TMobilityClientNotReadyMutex,
+		TNoTagBackwardsOrRecoverableErrorOrError
+		)
+		
+	// Transitions
+	DECLARE_SMELEMENT_HEADER(TCompleteMobilityClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TCompleteMobilityClient)
+
+	DECLARE_SMELEMENT_HEADER(TNotifyClientPreferredCarrierAvailable, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TNotifyClientPreferredCarrierAvailable)
+
+	DECLARE_SMELEMENT_HEADER(TNotifyClientNewCarrierActive, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TNotifyClientNewCarrierActive)
+
+	};
+}
+
+#endif // MOBILITYCPR_ACTIVITIES_H
+