datacommsserver/esockserver/CoreProviders/inc/corecpractivities.h
changeset 0 dfb7c4ff071f
child 18 9644881fedd0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/CoreProviders/inc/corecpractivities.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,233 @@
+// Copyright (c) 2006-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:
+// Core CPR Activities
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef SYMBIAN_CORECPRACTIVITIES_H
+#define SYMBIAN_CORECPRACTIVITIES_H
+
+#include <elements/sm_core.h>
+#include <comms-infras/ss_corepractivities.h>
+#include <comms-infras/corecprstates.h>
+
+
+
+namespace CprActivities
+{
+
+DECLARE_EXPORT_ACTIVITY_MAP(coreCprActivities)
+
+
+} //namespace CprActivities
+
+namespace CprDataClientStartActivity
+{
+typedef MeshMachine::TNodeContext<CCoreConnectionProvider, PRStates::TContext> TContext;
+
+EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoTagBackward, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
+	IMPORT_C virtual TInt TransitionTag();
+DECLARE_SMELEMENT_FOOTER( TNoTagOrNoTagBackward )
+
+EXPORT_DECLARE_SMELEMENT_HEADER( TStartDataClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+	IMPORT_C virtual void DoL();
+DECLARE_SMELEMENT_FOOTER( TStartDataClient )
+
+class CDataClientStartActivity : public MeshMachine::CNodeActivityBase
+	{
+public:
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode)
+			{ return new(ELeave) CDataClientStartActivity(aActivitySig, aNode); }
+
+	virtual ~CDataClientStartActivity() {}
+
+public:
+	Messages::TClientIter<Messages::TDefaultClientMatchPolicy> iClientIter;
+
+protected:
+	IMPORT_C CDataClientStartActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+	};
+
+}
+
+namespace CprPriorityUpdateActivity
+{
+class CPriorityUpdateActivity : public MeshMachine::CNodeParallelActivityBase
+	{
+public:
+	TUint Priority() const
+		{
+		return iLastPriority;
+		}
+	void SetPriority(TUint aPriority)
+		{
+		iLastPriority = aPriority;
+		}
+	TBool UpdatePriority() const
+		{
+		return iUpdatePriority;
+		}
+public:
+	EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrSendPriorityToCtrlProvider, MeshMachine::TStateFork<CprStates::TContext>, NetStateMachine::MStateFork, CprStates::TContext )
+		IMPORT_C virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER( TNoTagOrSendPriorityToCtrlProvider )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrSendPriorityToServProvider, MeshMachine::TStateFork<CprStates::TContext>, NetStateMachine::MStateFork, CprStates::TContext )
+		IMPORT_C virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER( TNoTagOrSendPriorityToServProvider )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TUpdatePriorityForServiceProviders, MeshMachine::TStateTransition<CprStates::TContext>, NetStateMachine::MStateTransition, CprStates::TContext )
+		IMPORT_C virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TUpdatePriorityForServiceProvider )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TUpdatePriorityForControlProvider, MeshMachine::TStateTransition<CprStates::TContext>, NetStateMachine::MStateTransition, CprStates::TContext )
+		IMPORT_C virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TUpdatePriorityForControlProvider )
+
+protected:
+	CPriorityUpdateActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount);
+	
+protected:
+	TBool iUpdatePriority;
+
+private:
+	TUint iLastPriority;
+	};
+}
+
+namespace CprControlClientJoinActivity
+{
+class CControlClientJoinActivity : public CprPriorityUpdateActivity::CPriorityUpdateActivity
+	{
+public:
+	IMPORT_C static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+	IMPORT_C virtual ~CControlClientJoinActivity();
+
+public:
+
+	void SaveJoinMessageData(CprStates::TContext& aContext)
+		{
+		if (aContext.iMessage.IsMessage<ESock::TCFPeer::TJoinRequest>())
+			{
+			iSendJoinComplete = ETrue;
+			}
+		if (aContext.Node().FindClient(aContext.iSender))
+			{
+			iUpdatePriority = ETrue;
+			}
+		}
+
+	TBool NeedToSendJoinComplete() const
+		{
+		return iSendJoinComplete;
+		}
+
+public:
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TAddClientOrUpdatePriority, MeshMachine::TStateFork<CprStates::TContext>, NetStateMachine::MStateFork, CprStates::TContext )
+		IMPORT_C virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER( TAddClientOrUpdatePriority )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrSendActive, MeshMachine::TStateFork<CprStates::TContext>, NetStateMachine::MStateFork, CprStates::TContext )
+		IMPORT_C virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER( TNoTagOrSendActive )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TSendJoinCompleteIfRequest,  MeshMachine::TStateTransition<CprStates::TContext>, NetStateMachine::MStateTransition, CprStates::TContext )
+		IMPORT_C virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TSendJoinCompleteIfRequest )
+
+private:
+	TBool iSendJoinComplete;
+
+protected:
+	CControlClientJoinActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount);
+	};
+}
+
+namespace CprClientLeaveActivity
+{
+class CClientLeaveActivity : public CprPriorityUpdateActivity::CPriorityUpdateActivity
+	{
+public:
+	IMPORT_C static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+	IMPORT_C virtual ~CClientLeaveActivity();
+
+public:
+	typedef MeshMachine::TNodeContext<CCoreConnectionProvider, CprStates::TContext> TContext;
+
+	void SaveLeaveMessageData(const TContext& aContext)
+		{
+		iSendLeaveComplete = aContext.iMessage.IsMessage<ESock::TCFPeer::TLeaveRequest>() ? ETrue: EFalse;
+		}
+	
+	TBool NeedToSendLeaveComplete() const
+		{
+		return iSendLeaveComplete;
+
+		}
+public:
+	EXPORT_DECLARE_SMELEMENT_HEADER( TSendLeaveCompleteIfRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+		IMPORT_C virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TSendLeaveCompleteIfRequest )
+
+	EXPORT_DECLARE_SMELEMENT_HEADER( TSaveLeaveMessageData, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
+		IMPORT_C virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TSaveLeaveMessageData )
+
+	DECLARE_AGGREGATED_TRANSITION2(
+		TSendLeaveCompleteAndSendDataClientIdleIfNeeded,
+		TSendLeaveCompleteIfRequest,
+		CoreNetStates::TSendDataClientIdleIfNoClients
+		)
+	DECLARE_AGGREGATED_TRANSITION3(
+		TRemoveClientAndDestroyOrphanedDataClients,
+		TSaveLeaveMessageData,
+		MeshMachine::TRemoveClient,
+		PRStates::TDestroyOrphanedDataClients
+		)
+
+private:
+	TBool iSendLeaveComplete;
+
+protected:
+	CClientLeaveActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aActivitiesCount);
+	};
+}
+
+namespace CprBindToActivity
+{
+class CCprBindToActivity : public PRActivities::CBindToActivity
+	{
+protected:
+	typedef MeshMachine::TNodeContext<CCoreConnectionProvider, CoreNetStates::TContext> TContext;
+public:
+	EXPORT_DECLARE_SMELEMENT_HEADER( TSendControlClientJoinRequestWithPriority, MeshMachine::TStateTransition<CCprBindToActivity::TContext>, NetStateMachine::MStateTransition, CCprBindToActivity::TContext )
+   		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER( TSendControlClientJoinRequestWithPriority )
+
+protected:
+	CCprBindToActivity(const MeshMachine::TNodeActivity& aActivitySig,  MeshMachine::AMMNodeBase& aNode, TInt aNextActivityCount);
+
+// private:
+// if you are adding any data here don't forget to override NewL.
+	};
+}
+
+#endif //SYMBIAN_CORECPRACTIVITIES_H
+