sipproviderplugins/sipprovider/sipconnectionplugins/inc/sipcpr.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 14:57:13 +0300
branchRCL_3
changeset 56 2c7192069824
parent 0 307788aac0a8
permissions -rw-r--r--
Revision: 201038 Kit: 201041

// 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 Connection Provider class 
// 
//

/**
 @file
 @internalComponent
*/

#ifndef SYMBIAN_SIPCPR_H
#define SYMBIAN_SIPCPR_H

#include <comms-infras/ss_log.h>
#include <comms-infras/corecpr.h>
#include "sipcprfactory.h"
#include "sipcprmessages.h"
#include "sipprovisioninfo.h"
#include <comms-infras/interfacetable.h>
#include <comms-infras/ss_coreprstates.h>
#include <comms-infras/ss_corepractivities.h>
#include <comms-infras/ss_mmnode.h>
#include <elements/mm_mutexpolicies.h>
#include "TransitionEngineMgr.h"


#ifdef __CFLOG_ACTIVE
	#define KSipCprTag  KESockConnectionTag
	_LIT8(KSipCprSubTag, "sipcpr");
#endif

namespace SipCprStates
    {
    class TStoreProvision;
    class TRegisterCpr;    
    class TAwaitingRegistrationComplete;
    class TDeRegisterCpr;
    class TAwaitingDeRegistrationComplete;
    class TSendProvision;    
    class TNoTagOrDeRegister;
    class TNoTagOrRegistered;    
    class TIntializeWaitForIncmgParams;       
    class TWaitForIncomingOrUseExisting;
    class TAwaitingIncomingConnection;
    class TSetPostedToScpr;       
    }

class CSipConnectionProvider : public CCoreConnectionProvider, MSIPRegistrationClient
/** Sip Connection Provider

@internalTechnology
@released Since 9.5 */
    {
friend class CSipConnectionProviderFactory;
friend class SipCprStates::TStoreProvision;
friend class SipCprStates::TSendProvision;
friend class SipCprStates::TRegisterCpr;
friend class SipCprStates::TSetPostedToScpr;
friend class SipCprStates::TAwaitingRegistrationComplete;
friend class SipCprStates::TDeRegisterCpr;
friend class SipCprStates::TAwaitingDeRegistrationComplete;
friend class SipCprStates::TNoTagOrDeRegister;
friend class SipCprStates::TNoTagOrRegistered;
friend class SipCprStates::TIntializeWaitForIncmgParams;
friend class SipCprStates::TWaitForIncomingOrUseExisting;
friend class SipCprStates::TAwaitingIncomingConnection;

public:
    typedef CSipConnectionProviderFactory FactoryType;
    
    /**
    Constructs the SIP connection provider
    
    @param aFactory SIP conneciton provider factory    
    */
    
	static CSipConnectionProvider* NewL(ESock::CConnectionProviderFactoryBase& aFactory);
	
	/**
    Destructor of the class
    */
    
	virtual ~CSipConnectionProvider();
	
public:
	//-=========================================================
	// MSIPRegistrationClient methods
	//-=========================================================
	virtual void RegistrationComplete(TInt aError);
	virtual void DeRegistrationComplete(TInt aError);
	virtual void ErrorOccurred(TInt aError);
	virtual TUint32 GetProfileId();	
	virtual TUid GetAppUid();
	virtual CSIPTransitionEngine* GetTE();	
						
	TBool					iIsIncoming;
		
protected:	
    CSipConnectionProvider(ESock::CConnectionProviderFactoryBase& aFactory);
    virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
	void ConstructL();

	void SetConfigL();
		    
private:
	TUint32					iProfileId;
	TUid					iAppUid;	

	CTransitionEngineMgr*	iTransitionEngineMgr;
	CSIPTransitionEngine*	iTransitionEngine;
    SipCpr::TCprStage		iStage;	
    SipCpr::TConnType		iConnStatus;
 	TDesC8*					iFromField; // this is required by SCPR and will be sent with the Provision message
 	TInt 					iActivityAwaitingResponse;
 	TSipCprProvisionInfo*	iProvisionInfo;
 	
 	Messages::RNodeInterface iSelf;    
 	TInt					iStashedStoppedCode;	
 	TSubConnOpen::TSubConnType iSubconType			;
    };
    
#endif //SYMBIAN_SIPCPR_H