diff -r 000000000000 -r af10295192d8 networkcontrol/commsuserpromptmgr/state/inc/netupsstate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/networkcontrol/commsuserpromptmgr/state/inc/netupsstate.h Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,186 @@ +// 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: +// This file specifies the states which can be used to form a +// Net Ups State Machine. +// @internalComponent +// @prototype +// +// + +#ifndef NETUPSSTATE_H +#define NETUPSSTATE_H + +#include // defines TInt +#include // defines ThreadId, TProcessId + +#include + +#include // defines ESock::TCFMessage +#include "netupstypes.h" // defines TDestinationName, TNetUpsDecision + +#include "netupstypes.h" // defines TRequestId +#include "netupskeys.h" +#include "netupsdatabaseentry.h" +#include "netupsprocessentry.h" // defines the database entry +#include "netupsthreadentry.h" // defines the database sub entry +#include "netupsstatedef.h" // defines the states for each state machine + +#include // defines the comms debug logging utility + +namespace NetUps +{ +class CNetUpsImpl; +class CUpsStateMachine; +NONSHARABLE_CLASS(CState) + { +public: + static CState* NewL(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + virtual ~CState(); + + const TNetUpsState& State() const; + CUpsStateMachine& UpsStateMachine(); + static void PerformStateTransition(TEvent aEvent, CProcessEntry& aProcessEntry); + + virtual void ProcessPolicyCheckRequestL(TThreadKey& aThreadKey, const TPolicyCheckRequestData& aPolicyCheckRequestData, TRequestId aRequestId); + + virtual void IncrementConnectionCountL(TCommsIdKey& aCommsIdKey); + virtual void DecrementConnectionCountL(TCommsIdKey& aCommsIdKey); + + virtual void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + virtual void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + + virtual void HandleProcessTermination(TProcessKey& aProcessKey); + virtual void HandleThreadTermination(TThreadKey& aThreadKey); + +protected: + CState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); +private: + void ConstructL(); +private: + TNetUpsState iNetUpsState; + CUpsStateMachine& iUpsStateMachine; + + __FLOG_DECLARATION_MEMBER; + }; + +NONSHARABLE_CLASS(CNullState) : public CState + { +public: + void ProcessPolicyCheckRequestL(TThreadKey& aThreadKey, const TPolicyCheckRequestData& aPolicyCheckRequestData, TRequestId aRequestId); + + CNullState(CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CProcLifeTime_NonSessionState) : public CState + { +public: + void ProcessPolicyCheckRequestL(TThreadKey& aThreadKey, const TPolicyCheckRequestData& aPolicyCheckRequestData, TRequestId aRequestId); + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + void HandleThreadTermination(TThreadKey& aThreadKey); + + CProcLifeTime_NonSessionState(CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CProcLifeTime_SessionState) : public CState + { +public: + void HandleProcessTermination(TProcessKey& aProcessKey); + + CProcLifeTime_SessionState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CProcLifeTime_TransitTo_SessionState) : public CProcLifeTime_SessionState + { +public: + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + + CProcLifeTime_TransitTo_SessionState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_NonSessionState) : public CState + { +public: + void ProcessPolicyCheckRequestL(TThreadKey& aThreadKey, const TPolicyCheckRequestData& aPolicyCheckRequestData, TRequestId aRequestId); + void DecrementConnectionCountL(TCommsIdKey& aCommsIdKey); + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + void HandleThreadTermination(TThreadKey& aThreadKey); + + CNetLifeTime_NonSessionState(CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_SessionYesState) : public CState + { +public: + void DecrementConnectionCountL(TCommsIdKey& aCommsIdKey); + + CNetLifeTime_SessionYesState(CUpsStateMachine& aStateMachine); +protected: + CNetLifeTime_SessionYesState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_TransitTo_SessionYesState) : public CNetLifeTime_SessionYesState + { +public: + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + + CNetLifeTime_TransitTo_SessionYesState(CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_SessionNo_WithOutConnectionsState) : public CState + { +public: + void HandleProcessTermination(TProcessKey& aProcessKey); + void DecrementConnectionCountL(TCommsIdKey& aCommsIdKey); + + CNetLifeTime_SessionNo_WithOutConnectionsState(CUpsStateMachine& aStateMachine); +protected: + CNetLifeTime_SessionNo_WithOutConnectionsState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTimeSession_TransitTo_SessionNoWithOutConnectionsState) : public CNetLifeTime_SessionNo_WithOutConnectionsState + { +public: + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleThreadTermination(TThreadKey& aThreadKey); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + + CNetLifeTimeSession_TransitTo_SessionNoWithOutConnectionsState(CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_SessionNo_WithConnectionsState) : public CState + { +public: + void DecrementConnectionCountL(TCommsIdKey& aCommsIdKey); + + CNetLifeTime_SessionNo_WithConnectionsState(CUpsStateMachine& aStateMachine); +protected: + CNetLifeTime_SessionNo_WithConnectionsState(TNetUpsState aNetUpsState, CUpsStateMachine& aStateMachine); + }; + +NONSHARABLE_CLASS(CNetLifeTime_TransitTo_SessionNo_WithConnectionsState) : public CNetLifeTime_SessionNo_WithConnectionsState + { +public: + void HandleUPSRequestCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TNetUpsDecision aNetUpsDecision); + void HandleUPSErrorOnCompletionL(TCommsIdKey& aCommsIdKey, MPolicyCheckRequestOriginator& aPolicyCheckRequestOriginator, TInt aError); + + CNetLifeTime_TransitTo_SessionNo_WithConnectionsState(CUpsStateMachine& aStateMachine); + }; + +} // end namespace NetUps + +#endif // NETUPSSTATE_H