diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/MobilityCoreProviders/inc/mobilitymcprstates.h Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,117 @@ +// 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 the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Mobility Meta Connection Provider States +// +// + +/** + @file + @internalComponent +*/ + + +#ifndef MOBILITYMCPRSTATES_H +#define MOBILITYMCPRSTATES_H + +#include +#include +#include + +namespace MobilityMCprStates +{ + +typedef MeshMachine::TNodeContext TContext; + +//-========================================================= +// +//Core Mobile Meta Connection Provider Transition Ids 10000..11000 +// +//-========================================================= + +const TInt KStartMobilityHandshake = 10000; +const TInt KAwaitMobility = 10001; +const TInt KReConnect = 10002; + +//-========================================================= +// +//Mutexes +// +//-========================================================= + +//This mutex blocks when the mobility is handshaking on the node +class THandshakingMobilityMutex + { +public: + static TBool IsBlocked(MeshMachine::TNodeContextBase& aContext); + }; + +//-========================================================= +// +//States +// +//-========================================================= + +DECLARE_SMELEMENT_HEADER(TAwaitingStartMobility, MeshMachine::TState, NetStateMachine::MState, TContext) + virtual TBool Accept(); +DECLARE_SMELEMENT_FOOTER(TAwaitingStartMobility) + +/** + Mobility base state implementing generic cancellation behaviour. +*/ +class TStateBase : public MeshMachine::TState + { +public: + explicit TStateBase(TContext& aContext) : MeshMachine::TState(aContext) + { + } + virtual void Cancel(); + }; + +DECLARE_SMELEMENT_HEADER(TAwaitingMigrationRequestedOrRejected, MobilityMCprStates::TStateBase, NetStateMachine::MState, TContext) + virtual TBool Accept(); +DECLARE_SMELEMENT_FOOTER(TAwaitingMigrationRequestedOrRejected) + +DECLARE_SMELEMENT_HEADER(TAwaitingMigrationAcceptedOrRejected, MobilityMCprStates::TStateBase, NetStateMachine::MState, TContext) + virtual TBool Accept(); +DECLARE_SMELEMENT_FOOTER(TAwaitingMigrationAcceptedOrRejected) + +//-========================================================= +// +//State Forks +// +//-========================================================= +DECLARE_SMELEMENT_HEADER(TNoTagOrErrorTagIfMobilityRunning, MeshMachine::TStateFork, NetStateMachine::MStateFork, TContext) + virtual TInt TransitionTag(); +DECLARE_SMELEMENT_FOOTER(TNoTagOrErrorTagIfMobilityRunning) + +DECLARE_SERIALIZABLE_STATE( + TNoTagBlockedByMobilityHandshaking, + THandshakingMobilityMutex, + MeshMachine::TNoTag + ) + +//-========================================================= +// +//Transitions +// +//-========================================================= + +DECLARE_SMELEMENT_HEADER(TReplyMobilityStarted, MeshMachine::TStateTransition, NetStateMachine::MStateTransition, TContext) + virtual void DoL(); +DECLARE_SMELEMENT_FOOTER(TReplyMobilityStarted) + +} //namespace MobilityMCprStates + +#endif // MOBILITYMCPRSTATES_H +