diff -r 000000000000 -r 307788aac0a8 sipproviderplugins/sipprovider/sipconnectionplugins/inc/sipscpr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sipproviderplugins/sipprovider/sipconnectionplugins/inc/sipscpr.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,185 @@ +// 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: +// SIP SubConnection Provider class. +// +// + +/** + @file + @internalComponent +*/ + +#ifndef SYMBIAN_SIPSCPR_H +#define SYMBIAN_SIPSCPR_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "sipscprfactory.h" +#include "SipStateMachine.h" +#include "transitionengine.h" +#include "sipprovisioninfo.h" +#include "sipcprmessages.h" + + +#ifdef __CFLOG_ACTIVE + #define KSipSCprTag KESockSubConnectionTag + _LIT8(KSipSCprSubTag, "sipscpr"); +#endif + + +namespace SipSCprStates + { + + class TNoTagOrAlreadyStarted; + class TNoTagOrAlreadyStopped; + class TStoreProvision; + class TStartSession; + class TAwaitingSessionEstablished; + class TStopSession; + class TAwaitingSessionTerminated; + class TSetParameters; + //class TSendProviderDown; + } + + +namespace SipSCpr +{ +enum TSCprStage + { + EFresh = 0, + EStarting, + EActive, + EStopping, + EStopped + }; +} + +class TSipSCprMessages + { +public: + enum + {ERealmId = 0x200041F6}; +private: + enum + { + ESipSCprSessionEstablished = Messages::TEBase::TNull::EId+8000, + ESipSCprSessionTerminated, + ESipSCprSessionError, + EConnectionUp + }; +public: + typedef Messages::TMessageSigNumber TSipSessionEstablished; + typedef Messages::TMessageSigNumber TSipSessionTerminated; + typedef Messages::TMessageSigNumber TSipSessionError; + typedef Messages::TMessageSigNumber TConnectionUp; + }; + + +class CSipSubConnectionProvider : public CCoreSubConnectionProvider, + public MSIPStateMachineClient +/** SIP subconnection provider + +@internalTechnology +@released Since 9.4 */ + { + friend class CSipSubConnectionProviderFactory; + friend class SipSCprStates::TNoTagOrAlreadyStarted; + friend class SipSCprStates::TNoTagOrAlreadyStopped; + friend class SipSCprStates::TStoreProvision; + friend class SipSCprStates::TStartSession; + friend class SipSCprStates::TAwaitingSessionEstablished; + friend class SipSCprStates::TStopSession; + friend class SipSCprStates::TAwaitingSessionTerminated; + friend class SipSCprStates::TSetParameters; + //friend class SipSCprStates::TSendProviderDown; + + +public: + typedef CSipSubConnectionProviderFactory FactoryType; + + static CSipSubConnectionProvider* NewL(ESock::CSubConnectionProviderFactoryBase& aFactory, TSubConnOpen::TSubConnType aSubConnType); + + /** + Destructor of the class + */ + virtual ~CSipSubConnectionProvider(); + + /** + Returns the address of the object of this class. This address will be used to create + SIP high-level state machine + */ + MSIPStateMachineClient* NodeAddr(); + + //-========================================================= + // MSIPStateMachineClient methods + //-========================================================= + virtual void CallEstablished(); + virtual void CallTerminated(TInt aError, TInt aSipCode); + virtual void IncomingCall(TIncomingCallParameters& aCallParams); + virtual void CredentialsRequired(const TDesC8 & aRealm); + virtual void ReceiveNotification(TDesC8 & aNotification); + + TSubConnOpen::TSubConnType subconType; + +protected: + CSipSubConnectionProvider(ESock::CSubConnectionProviderFactoryBase& aFactory); + /** + Second-level of the construction of the object of the class + + @aSubConnType subconnection type (Could be CreateNew, Default and WaitIncoming) + */ + void ConstructL(TSubConnOpen::TSubConnType aSubConnType); + + virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage); + + /** + intializes the iParameterBundle with the incoming conneciton paramenter values + + @param aCallParams, incoming connection parameter values + */ + void InitialiseParametersL(TIncomingCallParameters& aCallParams); + + // Sets the parameters(invite or subscribe) into SIP state machine + void DoParametersAboutToBeSetL(ESock::RCFParameterFamilyBundle_const& aParameterBundle); + + /** + Creates the SIP High-level state machine + */ + void CreateStateMachineL(); + + +protected: + TBool iAwaitingSubConnection; + SipSCpr::TSCprStage iStage; + CSipStateMachine* iSipSm; + CSIPTransitionEngine* iTransitionEngine; + //TPtrC8 iFromField; + TDesC8* iFromField; + TInt iStopCode; + TInt iActivityAwaitingResponse; + }; + +#endif //SYMBIAN_SIPSCPR_H +