networkcontrol/iptransportlayer/inc/netmcprups_activities.h
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkcontrol/iptransportlayer/inc/netmcprups_activities.h	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,136 @@
+// 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 NETMCPRUPS_ACTIVITIES_H_INCLUDED
+#define NETMCPRUPS_ACTIVITIES_H_INCLUDED
+
+#define SYMBIAN_NETWORKING_UPS
+
+#ifdef SYMBIAN_NETWORKING_UPS
+
+#include <comms-infras/upsmcpractivities.h>
+
+namespace NetMCprUpsActivities 
+/**
+Support activities for User Prompt Service (UPS)
+*/
+{
+
+NONSHARABLE_CLASS(CUpsAuthorisationActivity) : public UpsMCprActivities::CUpsAuthorisationActivityBase
+/**
+Base class used to implement IP technology activities requiring UPS authorisation.
+
+Mainly used to implement the GetUpsDestinationString() pure virtual which CUpsAuthorisationActivityBase
+calls to form the UPS destination string from an IPv4/IPv6 address.  Can also be used as an activity in
+its own right (see CUpsAuthorisationActivityBase - where all the relevant functionality is derived from).
+*/
+	{
+public:
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+
+	// from CUpsAuthorisationActivityBase
+	NetUps::CNetUps* GetNetUpsL(TInt32 aServiceId);
+	TInt GetUpsDestinationString(TUpsDestinationAddrType aDestinationType, const TUpsDestinationAddr& aDestination, TDes& aOutputString);
+	const TDesC& GetUpsAccessPointNameL();
+
+protected:
+	void PerformPolicyCheckRequestActionsL(const Messages::TNodeId& aCommsId);
+    void PerformPolicyCheckResponseActions(NetUps::TNetUpsDecision aNetUpsDecision, const Messages::TNodeId& aCommsId);
+    CUpsAuthorisationActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aNextActivityCount);
+	};
+
+NONSHARABLE_CLASS(CUpsNoBearer) : public CUpsAuthorisationActivity
+/**
+Class used to implement IP technology NoBearer activity with UPS authorisation.
+
+Intended to be used in conjunction with the existing core NoBearer activity (MCprNoBearer).
+Contains methods to forward BindTo and BindToComplete messages between the originator and
+MCprNoBearer.  Also contains the id of the MCprNoBearer activity that sent the BindTo message,
+which is required in order to send the BindToComplete message back to the correct activity in
+MCprNoBearer.
+*/
+	{
+public:
+	// Note: TContext used to be CUpsAuthorisationActivityBase::TContext, but it was made more
+	// specialised to allow NoTagOrInvokeUps to access CNetworkMetaConnectionProvider::UpsDisabled().
+	typedef MeshMachine::TNodeContext<CUpsNetworkMetaConnectionProvider, CUpsAuthorisationActivityBase::TContext> TContext;
+
+	static const TInt KInvokeUps = 10000;			// tuple tag (how are these allocated?)
+
+    static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
+
+	// Utility
+	
+	inline void  SetBindToOriginatorActivityId(TUint aActivityId);
+	inline TUint BindToOriginatorActivityId() const;
+
+	// Transitions
+
+	DECLARE_SMELEMENT_HEADER(TForwardBindToToOriginators, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TForwardBindToToOriginators)
+
+	DECLARE_SMELEMENT_HEADER(TForwardBearerToOriginators, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TForwardBearerToOriginators)
+
+	DECLARE_SMELEMENT_HEADER(TForwardBindToCompleteToSelf, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
+		virtual void DoL();
+	DECLARE_SMELEMENT_FOOTER(TForwardBindToCompleteToSelf)
+
+	// State Forks
+
+	DECLARE_SMELEMENT_HEADER(TNoTagOrInvokeUps, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext)
+		virtual TInt TransitionTag();
+	DECLARE_SMELEMENT_FOOTER(TNoTagOrInvokeUps)
+		
+protected:
+    CUpsNoBearer(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TUint aNextActivityCount);
+
+private:
+	TUint iBindToOriginatorActivityId;	// activity id of MCprNoBearer activity
+	};
+
+inline void CUpsNoBearer::SetBindToOriginatorActivityId(TUint aActivityId)
+	{ iBindToOriginatorActivityId = aActivityId; }
+
+inline TUint CUpsNoBearer::BindToOriginatorActivityId() const
+	{ return iBindToOriginatorActivityId; }
+
+} //NetMCprUpsActivities
+
+namespace NetMCprPolicyCheckRequestActivity
+	{
+	DECLARE_NODEACTIVITY(NetMCprPolicyCheckRequest)
+	}
+
+namespace NetMCprUpsNoBearerActivity
+	{
+	DECLARE_NODEACTIVITY(NetMCprUpsNoBearer)
+	}
+
+namespace NetMCprMonitorProviderStatusActivity
+	{
+	DECLARE_NODEACTIVITY(NetMCprUpsProviderStatusChange)
+	}
+
+namespace NetMCprUpsStatusChangeActivity
+	{
+	DECLARE_NODEACTIVITY(NetMCprUpsStatusChange)
+	}
+
+#endif //SYMBIAN_NETWORKING_UPS
+
+#endif // NETMCPRUPS_ACTIVITIES_H_INCLUDED