diff -r 6b1d113cdff3 -r 6638e7f4bd8f telephonyprotocols/pdplayer/src/pdptiermanagerselector.cpp --- a/telephonyprotocols/pdplayer/src/pdptiermanagerselector.cpp Mon May 03 13:37:20 2010 +0300 +++ b/telephonyprotocols/pdplayer/src/pdptiermanagerselector.cpp Thu May 06 15:10:38 2010 +0100 @@ -1,142 +1,142 @@ -// Copyright (c) 2006-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: -// - -/** - @file - @internalComponent -*/ - -#include "pdptiermanagerselector.h" -#include "pdptiermanagerfactory.h" - -#include -#include -#include -#include -#include //TConnIdList -#include - -#ifdef __CFLOG_ACTIVE -#define KPdpTierMgrTag KESockTierTag -_LIT8(KPdpTierMgrSubTag, "pdptiermgr"); -#endif // __CFLOG_ACTIVE - -using namespace ESock; -using namespace CommsDat; - - -//Panic codes -_LIT(KPdpSelectorPanic, "PdpSelector"); -enum TPdpSelectorPanic - { - EExpectedAccessPointAwareSystem = 0, - EUnExpectedSelectionPreferences = 1 - }; - -// -//CPdpProviderSelector -class CPdpProviderSelector : public CBase, public ASimpleSelectorBase -/** Link connection selector. - Simple selector object for the link layer. - -@internalComponent -@prototype -*/ - { -public: - explicit CPdpProviderSelector(const Meta::SMetaData& aSelectionPreferences) - : ASimpleSelectorBase(aSelectionPreferences) - { - } - -private: - virtual void SelectL(ESock::ISelectionNotify& aSelectionNotify); - }; - -void CPdpProviderSelector::SelectL(ISelectionNotify& aSelectionNotify) - { - ASSERT(iDbs); - ASSERT(iTierRecord); - TUint32 defaultAccessPoint = iTierRecord->iDefaultAccessPoint; - - //This selector deals only with the AccessPoint aware system! - __ASSERT_DEBUG(defaultAccessPoint!=0,User::Panic(KPdpSelectorPanic,EExpectedAccessPointAwareSystem)); - - if (iSelectionPrefs.IsEmpty()) - { - //Implicit case on the new setup - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using Default AP:%d"),this,defaultAccessPoint)); - aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(defaultAccessPoint)); - aSelectionNotify.SelectComplete(this,NULL); - return; - } - - const TConnPref& prefs = iSelectionPrefs.Prefs(); - if (prefs.ExtensionId() == TConnPref::EConnPrefProviderInfo) - { - ASSERT(iSelectionPrefs.Scope() & TSelectionPrefs::ESelectFromExisting); //This is always attach - const TConnProviderInfo& connProvInfo = static_cast(prefs).Info(); - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnProviderInfoPref, AP:%d"),this,connProvInfo.iInfo[1])); - aSelectionNotify.SelectComplete(this,FindProviderL(connProvInfo.iInfo[1],(TAny*)connProvInfo.iInfo[2])); - aSelectionNotify.SelectComplete(this,NULL); - return; - } - - if (prefs.ExtensionId() == TConnPref::EConnPrefSnap) - { - TUint accessPoint = static_cast(prefs).Snap(); - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnPrefSnap, AP:%d"),this,accessPoint)); - aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(accessPoint)); - aSelectionNotify.SelectComplete(this,NULL); - return; - } - - if (prefs.ExtensionId() == TConnPref::EConnPrefIdList) - { - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnIdList"),this)); - const TConnIdList& list = static_cast(prefs); - TInt count = list.Count(); - for (TInt i = 0; i < count; i++) - { - aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(list.Get(i))); - } - aSelectionNotify.SelectComplete(this,NULL); - return; - } - - //In this selector we _must_ have the new preferences, otherwise it means that - //a critical, non-recoverable mitsake has occured before when this selector has been picked. - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("ERROR: CPdpProviderSelector %08x::\tSelectL() Unexpected selection preferences"),this)); - User::Panic(KPdpSelectorPanic,EUnExpectedSelectionPreferences); - } - -// -// TPdpSelectorFactory::NewSelectorL - This fn matches a selector -MProviderSelector* TPdpSelectorFactory::NewSelectorL(const Meta::SMetaData& aSelectionPreferences) - { - __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpMetaCprSelectorBase::\tNewL()"))); - ASSERT(aSelectionPreferences.IsTypeOf(TSelectionPrefs::TypeId())); - CMDBSession* dbs = CMDBSession::NewLC(KCDVersion1_2); - CPdpProviderSelector* self = new (ELeave) CPdpProviderSelector(aSelectionPreferences); - CleanupStack::PushL(self); - ASSERT(self->iTierRecord==NULL); - self->iTierRecord = TierManagerUtils::LoadTierRecordL(TUid::Uid(CPDPTierManagerFactory::EUid),*dbs); - CleanupStack::Pop(self); - CleanupStack::Pop(dbs); - ASSERT(self->iDbs==NULL); - self->iDbs = dbs; - return self; - } - +// Copyright (c) 2006-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: +// + +/** + @file + @internalComponent +*/ + +#include "pdptiermanagerselector.h" +#include "pdptiermanagerfactory.h" + +#include +#include +#include +#include +#include //TConnIdList +#include + +#ifdef __CFLOG_ACTIVE +#define KPdpTierMgrTag KESockTierTag +_LIT8(KPdpTierMgrSubTag, "pdptiermgr"); +#endif // __CFLOG_ACTIVE + +using namespace ESock; +using namespace CommsDat; + + +//Panic codes +_LIT(KPdpSelectorPanic, "PdpSelector"); +enum TPdpSelectorPanic + { + EExpectedAccessPointAwareSystem = 0, + EUnExpectedSelectionPreferences = 1 + }; + +// +//CPdpProviderSelector +class CPdpProviderSelector : public CBase, public ASimpleSelectorBase +/** Link connection selector. + Simple selector object for the link layer. + +@internalComponent +@prototype +*/ + { +public: + explicit CPdpProviderSelector(const Meta::SMetaData& aSelectionPreferences) + : ASimpleSelectorBase(aSelectionPreferences) + { + } + +private: + virtual void SelectL(ESock::ISelectionNotify& aSelectionNotify); + }; + +void CPdpProviderSelector::SelectL(ISelectionNotify& aSelectionNotify) + { + ASSERT(iDbs); + ASSERT(iTierRecord); + TUint32 defaultAccessPoint = iTierRecord->iDefaultAccessPoint; + + //This selector deals only with the AccessPoint aware system! + __ASSERT_DEBUG(defaultAccessPoint!=0,User::Panic(KPdpSelectorPanic,EExpectedAccessPointAwareSystem)); + + if (iSelectionPrefs.IsEmpty()) + { + //Implicit case on the new setup + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using Default AP:%d"),this,defaultAccessPoint)); + aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(defaultAccessPoint)); + aSelectionNotify.SelectComplete(this,NULL); + return; + } + + const TConnPref& prefs = iSelectionPrefs.Prefs(); + if (prefs.ExtensionId() == TConnPref::EConnPrefProviderInfo) + { + ASSERT(iSelectionPrefs.Scope() & TSelectionPrefs::ESelectFromExisting); //This is always attach + const TConnProviderInfo& connProvInfo = static_cast(prefs).Info(); + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnProviderInfoPref, AP:%d"),this,connProvInfo.iInfo[1])); + aSelectionNotify.SelectComplete(this,FindProviderL(connProvInfo.iInfo[1],(TAny*)connProvInfo.iInfo[2])); + aSelectionNotify.SelectComplete(this,NULL); + return; + } + + if (prefs.ExtensionId() == TConnPref::EConnPrefSnap) + { + TUint accessPoint = static_cast(prefs).Snap(); + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnPrefSnap, AP:%d"),this,accessPoint)); + aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(accessPoint)); + aSelectionNotify.SelectComplete(this,NULL); + return; + } + + if (prefs.ExtensionId() == TConnPref::EConnPrefIdList) + { + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpProviderSelector %08x::\tSelectL() Using TConnIdList"),this)); + const TConnIdList& list = static_cast(prefs); + TInt count = list.Count(); + for (TInt i = 0; i < count; i++) + { + aSelectionNotify.SelectComplete(this,FindOrCreateProviderL(list.Get(i))); + } + aSelectionNotify.SelectComplete(this,NULL); + return; + } + + //In this selector we _must_ have the new preferences, otherwise it means that + //a critical, non-recoverable mitsake has occured before when this selector has been picked. + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("ERROR: CPdpProviderSelector %08x::\tSelectL() Unexpected selection preferences"),this)); + User::Panic(KPdpSelectorPanic,EUnExpectedSelectionPreferences); + } + +// +// TPdpSelectorFactory::NewSelectorL - This fn matches a selector +MProviderSelector* TPdpSelectorFactory::NewSelectorL(const Meta::SMetaData& aSelectionPreferences) + { + __CFLOG_VAR((KPdpTierMgrTag, KPdpTierMgrSubTag, _L8("CPdpMetaCprSelectorBase::\tNewL()"))); + ASSERT(aSelectionPreferences.IsTypeOf(TSelectionPrefs::TypeId())); + CMDBSession* dbs = CMDBSession::NewLC(KCDVersion1_2); + CPdpProviderSelector* self = new (ELeave) CPdpProviderSelector(aSelectionPreferences); + CleanupStack::PushL(self); + ASSERT(self->iTierRecord==NULL); + self->iTierRecord = TierManagerUtils::LoadTierRecordL(TUid::Uid(CPDPTierManagerFactory::EUid),*dbs); + CleanupStack::Pop(self); + CleanupStack::Pop(dbs); + ASSERT(self->iDbs==NULL); + self->iDbs = dbs; + return self; + } +