diff -r 000000000000 -r 307788aac0a8 sipproviderplugins/sipprovider/sipstatemachine/inc/SipStateBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sipproviderplugins/sipprovider/sipstatemachine/inc/SipStateBase.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,177 @@ +// Copyright (c) 2005-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: +// CSipStateBase definition file +// +// + +/** + @file + @internalComponent +*/ + +#ifndef SIP_STATE_BASE_H +#define SIP_STATE_BASE_H + +#include "siphlcommontypes.h" + +class CSipStateMachine; + +class CSipStateBase : public CBase +/** +This class will hold the base functionality required for a SIP state +to have in it. Every state implementation should be derived from this +class and implement the virtuals + +@internalComponent +@released since v9.2 +*/ + { +public: + /** + The constructor of the class. + + @param aStateMachine Handle to the state machine on which the state belongs + */ + CSipStateBase( CSipStateMachine* aStateMachine, TSipHLConsts::SIP_STATES aCurrState ) : + iSipSM(aStateMachine), iCurrState(aCurrState) + { + } + /** + The implemented version of the function will get called in case of a request + comes from the client. i.e the entity which instantiated the state machine. + + @param aRequestStatus To be set when the processing is complete + */ + virtual CSipStateBase * ProcessClientL(TRequestStatus& aStatus) = 0; + + /** + The implemented version of the function will get called in case of a request + comes from the server. i.e TE. + + @param aRequestStatus To be set when the processing is complete + */ + virtual CSipStateBase * ProcessServerL(TRequestStatus& aStatus) = 0; + + /** + The implemented version of the function can either be called from the client + ore the TE + + @param aRequestStatus To be set when the processing is complete + */ + virtual CSipStateBase * ProcessServerErrorL(TRequestStatus & aStatus) = 0; + + /** + The function will set what the client wants the state to do + + @param aRequest Request that are supported + */ + void SetClientRequest(TSipHLConsts::SIP_REQUESTS aRequest); + + /** + The function will set what the server wants the state to do + + @param aRequest Request that are supported + */ + void SetServerRequest(TSipHLConsts::SIP_REQUESTS aRequest); + + /** + The function will set what the client wants the state to do in + response of a request + + @param aResponse Response that are supported + */ + void SetClientResponse(TSipHLConsts::SIP_RESPONSES aResponse); + + /** + The function will set what the Server wants the state to do in + response of a request + + @param aResponse Response that are supported + */ + void SetServerResponse(TSipHLConsts::SIP_RESPONSES aResponse); + + /** + This function will Get the current state name + */ + TSipHLConsts::SIP_STATES GetStateId(); + + /** + This function will reset all the request and response to None + */ + void ResetRequestResponse(); + +protected: + // handle to the Next state + CSipStateBase* iNext; + CSipStateMachine* iSipSM; + TChar iReqIdentifier; + TSipHLConsts::SIP_REQUESTS iClientRequest; + TSipHLConsts::SIP_REQUESTS iServerRequest; + TSipHLConsts::SIP_RESPONSES iClientResponse; + TSipHLConsts::SIP_RESPONSES iServerResponse; + TSipHLConsts::SIP_STATES iCurrState; + }; + + +inline void CSipStateBase::SetClientRequest(TSipHLConsts::SIP_REQUESTS aRequest) +/** + */ + { + iReqIdentifier = 1; + iClientRequest = aRequest; + } +inline void CSipStateBase::SetServerRequest(TSipHLConsts::SIP_REQUESTS aRequest) +/** + */ + { + iReqIdentifier = 2; + iServerRequest = aRequest; + } + +inline void CSipStateBase::SetClientResponse(TSipHLConsts::SIP_RESPONSES aResponse) +/** + */ + { + iReqIdentifier = 3; + iClientResponse = aResponse; + } +inline void CSipStateBase::SetServerResponse(TSipHLConsts::SIP_RESPONSES aResponse) +/** + */ + { + iReqIdentifier = 4; + iServerResponse = aResponse; + } + +inline void CSipStateBase::ResetRequestResponse() +/** + */ + { + iReqIdentifier = 0; + iClientRequest = iServerRequest = TSipHLConsts::ERequestNone; + iClientResponse = iServerResponse = TSipHLConsts::EResponseNone; + } + +inline TSipHLConsts::SIP_STATES CSipStateBase::GetStateId() +/** + */ + { + return iCurrState; + } + + + + + +#endif