datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcpractivities.h.orig
changeset 1 21d2ab05f085
equal deleted inserted replaced
0:dfb7c4ff071f 1:21d2ab05f085
       
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Mobility Meta Connection Provider Activities
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalComponent
       
    21 */
       
    22 
       
    23 
       
    24 #ifndef MOBILITYMCPRACTIVITIES_H
       
    25 #define MOBILITYMCPRACTIVITIES_H
       
    26 
       
    27 #include <comms-infras/coremcpractivities.h>
       
    28 #include <comms-infras/mobilitymcprstates.h>
       
    29 #include <elements/nm_messages_errorrecovery.h>
       
    30 
       
    31 enum TMobilityMCprActivities
       
    32     {
       
    33     ECFActivityMCprMobility = ESock::ECFActivityCustom + 1,
       
    34     };
       
    35 
       
    36 namespace MobilityMCprActivities
       
    37 {
       
    38 DECLARE_EXPORT_ACTIVITY_MAP(mobilityMCprActivities)
       
    39 
       
    40 
       
    41 //
       
    42 //CMobilityActivity
       
    43 class CMobilityActivity : public MeshMachine::CNodeRetryActivity
       
    44 	{
       
    45 public:
       
    46     static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
       
    47 
       
    48 protected:
       
    49 	CMobilityActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
       
    50 	virtual ~CMobilityActivity();
       
    51 	typedef MeshMachine::TNodeContext<CMobilityMetaConnectionProvider, MCprStates::TContext> TContext;
       
    52 	
       
    53 private:
       
    54 	TBool EvaluatePreference(TContext& aContext);
       
    55     void SetHandshakingFlag();
       
    56     void ClearHandshakingFlag();
       
    57 
       
    58 private:
       
    59 	ESock::RMetaServiceProviderInterface* iCurrent;
       
    60 	ESock::RMetaServiceProviderInterface* iPreferred;
       
    61 	const TUint iAvailabilityScoreTreshold;
       
    62 
       
    63 
       
    64 public:
       
    65 		
       
    66 	DECLARE_SMELEMENT_HEADER(TAwaitingCurrentCarrierRejectedOrAvailabilityChange, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
       
    67 		virtual TBool Accept();
       
    68 	DECLARE_SMELEMENT_FOOTER(TAwaitingCurrentCarrierRejectedOrAvailabilityChange)
       
    69 	
       
    70 	DECLARE_SMELEMENT_HEADER(TNoTagOrAwaitMobility, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, CMobilityActivity::TContext)
       
    71 		virtual TInt TransitionTag();
       
    72 	DECLARE_SMELEMENT_FOOTER(TNoTagOrAwaitMobility)	
       
    73 
       
    74 	DECLARE_SMELEMENT_HEADER(TNoTagOrStartMobilityHandshakeBackwards, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, CMobilityActivity::TContext)
       
    75 		virtual TInt TransitionTag();
       
    76 	DECLARE_SMELEMENT_FOOTER(TNoTagOrStartMobilityHandshakeBackwards)
       
    77 	
       
    78 	DECLARE_SMELEMENT_HEADER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, CMobilityActivity::TContext)
       
    79 		virtual TInt TransitionTag();
       
    80 	DECLARE_SMELEMENT_FOOTER(TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger)
       
    81 	
       
    82 	DECLARE_SMELEMENT_HEADER(TClearHandshakingFlag, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
       
    83 		virtual void DoL();
       
    84 	DECLARE_SMELEMENT_FOOTER(TClearHandshakingFlag)
       
    85 
       
    86 	DECLARE_SMELEMENT_HEADER(TSendAvailabilityRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
       
    87 		virtual void DoL();
       
    88 	DECLARE_SMELEMENT_FOOTER(TSendAvailabilityRequest)
       
    89 
       
    90 	DECLARE_SMELEMENT_HEADER(TInformMigrationAvailableAndSetHandshakingFlag, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
       
    91 		virtual void DoL();
       
    92 	DECLARE_SMELEMENT_FOOTER(TInformMigrationAvailableAndSetHandshakingFlag)
       
    93 
       
    94 	// For the moment it is sufficient to use the re-connect activity, in the future we may want to
       
    95 	// customise the behavior, for example start the new layer before rebinding it, etc.
       
    96 	DECLARE_SMELEMENT_HEADER(TRequestReConnect, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
       
    97 		virtual void DoL();
       
    98 	DECLARE_SMELEMENT_FOOTER(TRequestReConnect)
       
    99 
       
   100 	DECLARE_SMELEMENT_HEADER(TInformMigrationCompleted, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, CMobilityActivity::TContext)
       
   101 		virtual void DoL();
       
   102 	DECLARE_SMELEMENT_FOOTER(TInformMigrationCompleted)
       
   103 
       
   104 	typedef MeshMachine::TActivitiesIdMutex<ESock::ECFActivityConnectionStartRecovery,
       
   105 											ESock::ECFActivityConnectionGoneDownRecovery> TActivityErrorRecoveryMutex;
       
   106 	DECLARE_SERIALIZABLE_STATE(
       
   107 	    TNoTagOrAwaitMobilityBackwardsOnMobilityTriggerBlockedByErrorRecovery,
       
   108 		TActivityErrorRecoveryMutex,
       
   109 		TNoTagOrAwaitMobilityBackwardsOnMobilityTrigger
       
   110 		)
       
   111 
       
   112 	DECLARE_SERIALIZABLE_STATE(
       
   113 		TNoTagOrAwaitMobilityBlockedByErrorRecovery,
       
   114 		TActivityErrorRecoveryMutex,
       
   115 		TNoTagOrAwaitMobility
       
   116 		)
       
   117 	};
       
   118 
       
   119 //
       
   120 //CConnectionRecoveryActivity
       
   121 class CConnectionRecoveryActivity : public MeshMachine::CNodeRetryActivity
       
   122 	{
       
   123 public:
       
   124     static MeshMachine::CNodeActivityBase* NewL(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
       
   125     void ReplyToOriginators(Messages::TEErrorRecovery::TErrorRecoveryResponse& aCFMessageSig);
       
   126 
       
   127 protected:
       
   128 	CConnectionRecoveryActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
       
   129 
       
   130 public:
       
   131 	Messages::TErrContext iOriginalErrContext; //Error context on which this activity started
       
   132 
       
   133 protected:
       
   134 	typedef MeshMachine::TNodeContext<CMobilityMetaConnectionProvider, MCprStates::TContext> TContext;
       
   135 
       
   136 public:
       
   137 	DECLARE_SMELEMENT_HEADER(TAwaitingReConnectComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext)
       
   138 		virtual TBool Accept();
       
   139 	DECLARE_SMELEMENT_FOOTER(TAwaitingReConnectComplete)
       
   140 
       
   141 	class TTransitionBase : public MeshMachine::TStateTransition<TContext>
       
   142 		{
       
   143 	public:
       
   144 		TTransitionBase(TContext& aContext)
       
   145 		:	MeshMachine::TStateTransition<TContext>(aContext)
       
   146 			{
       
   147 			}
       
   148 
       
   149 		virtual void Error(TInt aError);
       
   150 		};
       
   151 
       
   152 	DECLARE_SMELEMENT_HEADER(TStoreErrorContext, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   153 		virtual void DoL();
       
   154 	DECLARE_SMELEMENT_FOOTER(TStoreErrorContext)
       
   155 
       
   156 	DECLARE_SMELEMENT_HEADER(TProcessConnectionStartRecoveryRequest, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   157 		virtual void DoL();
       
   158 	DECLARE_SMELEMENT_FOOTER(TProcessConnectionStartRecoveryRequest)
       
   159 
       
   160 	DECLARE_SMELEMENT_HEADER(TProcessConnectionGoneDownRecoveryRequest, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   161 		virtual void DoL();
       
   162 	DECLARE_SMELEMENT_FOOTER(TProcessConnectionGoneDownRecoveryRequest)
       
   163 
       
   164 	DECLARE_SMELEMENT_HEADER(TSendRetryRecoveryResponse, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   165 		virtual void DoL();
       
   166 	DECLARE_SMELEMENT_FOOTER(TSendRetryRecoveryResponse)
       
   167 
       
   168 	DECLARE_SMELEMENT_HEADER(TSendPropagateRecoveryResponse, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   169 		virtual void DoL();
       
   170 	DECLARE_SMELEMENT_FOOTER(TSendPropagateRecoveryResponse)
       
   171 
       
   172 	DECLARE_SMELEMENT_HEADER(TSendIgnoreRecoveryResponse, CConnectionRecoveryActivity::TTransitionBase, NetStateMachine::MStateTransition, TContext)
       
   173 		virtual void DoL();
       
   174 	DECLARE_SMELEMENT_FOOTER(TSendIgnoreRecoveryResponse)
       
   175 	};
       
   176 
       
   177 }	// namespace MobilityMCprActivities
       
   178 
       
   179 #endif // MOBILITYMCPRACTIVITIES_H
       
   180