sipproviderplugins/sipprovider/sipconnectionplugins/src/siptiermanager.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:03:15 +0200
changeset 0 307788aac0a8
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// 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 is part of an ECOM plug-in
// SIP TierManager class definition
// 
//

/**
 @file
 @internalComponent
*/

#include <comms-infras/ss_log.h>
#include <comms-infras/ss_corepractivities.h>
#include <comms-infras/coretiermanagerstates.h>
#include <comms-infras/coretiermanageractivities.h>
#include "siptiermanager.h"
#include "siptiermanagerselector.h"

#ifdef __CFLOG_ACTIVE
#define KSipTierMgrTag KESockMetaConnectionTag
#endif

using namespace ESock;
using namespace NetStateMachine;
using namespace Messages;
using namespace MeshMachine;

namespace SipTierManagerActivities
{
DECLARE_DEFINE_ACTIVITY_MAP(stateMap)
ACTIVITY_MAP_END_BASE(TMActivities, coreTMActivities)
}


CSipTierManager* CSipTierManager::NewL(ESock::CTierManagerFactoryBase& aFactory)
/** 
@param aParentContainer the parent factory container which owns this factory
@return factory for SIP level meta connection providers
*/
	{
 	CSipTierManager* self =  new (ELeave) CSipTierManager(aFactory,SipTierManagerActivities::stateMap::Self());
 	CleanupStack::PushL (self);
	self->ConstructL();
	CleanupStack::Pop();
	return self;
	}

CSipTierManager::CSipTierManager(ESock::CTierManagerFactoryBase& aFactory,
                                 const MeshMachine::TNodeActivityMap& aActivityMap)
:	CCoreTierManager(aFactory,aActivityMap)
/** 
@param aFactoryId the ID which this factory can be looked up by
@param aParentContainer the parent factory container which owns this factory
*/
	{
	LOG_NODE_CREATE(KSipTierMgrTag, CSipTierManager);
	}

MProviderSelector* CSipTierManager::DoCreateProviderSelectorL(const Meta::SMetaData& aSelectionPreferences)
	{
	
	MProviderSelector* selector = CSipMetaCprSelector::NewL(aSelectionPreferences);
	CSipMetaCprSelector* sipselector = static_cast<CSipMetaCprSelector* >(selector);
	sipselector->SetTierManager(this);
	return selector;
	}

void CSipTierManager::ReceivedL(const TRuntimeCtxId& aSender, const TNodeId& aRecipient, TSignatureBase& aMessage)
    {
	TNodeContext<CSipTierManager> ctx(*this, aMessage, aSender, aRecipient);
    CCoreTierManager::Received(ctx);
    User::LeaveIfError(ctx.iReturn);
	}

void CSipTierManager::ConstructL()
	{
	//create the TransitionEngineManager here
	iTransitionEngineManager = new (ELeave) CTransitionEngineMgr;
	CCoreTierManager::ConstructL();
	}

CTransitionEngineMgr* CSipTierManager::TransitionEngineManager()
	{
	return iTransitionEngineManager;
	}
	
CSipTierManager::~CSipTierManager()
	{
	delete iTransitionEngineManager;		
	iTransitionEngineManager = NULL;
	}