authenticationservices/authenticationserver/source/server/pluginmgr.cpp
branchRCL_3
changeset 62 a71299154b21
parent 61 641f389e9157
child 63 94225563cd41
--- a/authenticationservices/authenticationserver/source/server/pluginmgr.cpp	Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
-* 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 the License "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: 
-* Implementation of CPluginMgr
-*
-*/
-
-
-/**
- @file
-*/
-
-#include "authserver_impl.h"
-#include <authserver/authpatchdata.h>
-#include <u32hal.h>
-#include <e32svr.h> 
-using namespace AuthServer;
-
-TLinearOrder<CAuthPluginInterface> CPluginMgr::SPluginOrder(PluginCompare);
-
-TInt CPluginMgr::PluginCompare(const CAuthPluginInterface& aLhs,
-									  const CAuthPluginInterface& aRhs)
-  {
-  return aLhs.Id() - aRhs.Id();
-  }
-
-TInt CPluginMgr::FindById(const TPluginId* aId,
-						 const CAuthPluginInterface& aRhs)
-  {
-  return *aId - aRhs.Id();
-  }
-
-
-CPluginMgr* CPluginMgr::NewLC()
-  {
-  CPluginMgr* me = new (ELeave) CPluginMgr();
-  CleanupStack::PushL(me);
-  me->ConstructL();
-  return me;
-  } 
-
-CPluginMgr* CPluginMgr::NewL()
-  {
-  CPluginMgr* me = CPluginMgr::NewLC();
-  CleanupStack::Pop(me);
-  return me;
-  }
-
-CPluginMgr::~CPluginMgr()
-  {
-  ReleasePlugins();
-  ReleaseImplInfo();
-  }
-
-
-void CPluginMgr::ConstructL()
-  {
-  BuildAuthPluginsListL();
-  }
-
-CAuthPluginInterface* CPluginMgr::PluginL(const TPluginId& aId)
-  {
-  TInt idx = iPlugins.FindInOrder<>(aId, CPluginMgr::FindById);
-  CAuthPluginInterface* plugin = 0;
-  if (idx == KErrNotFound)
-	{
-	  plugin = CreatePluginImplementationL(aId);
-	  iPlugins.InsertInOrder(plugin, SPluginOrder);
-	}
-  else
-	{
-	plugin = iPlugins[idx];
-	}
-  
-  return plugin;
-  }
-
-CAuthPluginInterface* CPluginMgr::ImplementationL(TInt aIndex)
-	{
-	if( aIndex < 0 || aIndex > iPlugins.Count()-1 )
-		{
-		User::Leave(KErrArgument);
-		}
-	return iPlugins[aIndex];
-	}
-
-const RImplInfoPtrArray& CPluginMgr::ImplementationsL()
-    {
-    if (iImplArray.Count() == 0) 
-        {
-        //To load plugins from sources other than ROM the patch 
-        // data KEnablePostMarketAuthenticationPlugins must be set to True.
-        TUint32 enablePostMarketPlugin = KEnablePostMarketAuthenticationPlugins;
-
-        #ifdef __WINS__
-
-        // Default SymbianOS behavior is to only load auth plugins from ROM.
-        enablePostMarketPlugin = 0;
-
-        // For the emulator allow the constant to be patched via epoc.ini
-        UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty,
-        (TAny*)"KEnablePostMarketAuthenticationPlugins", &enablePostMarketPlugin); // read emulator property (if present)
-
-        #endif
-          
-        if(enablePostMarketPlugin == 0)
-        	{
-         	TEComResolverParams resolverParams;
-           	REComSession::ListImplementationsL(KCAuthPluginInterfaceUid,
-        									 resolverParams,
-        									 KRomOnlyResolverUid,
-        									 iImplArray);
-        									 
-            }
-            
-         else
-         	{
-         	REComSession::ListImplementationsL(KCAuthPluginInterfaceUid, iImplArray);
-          	}
-        }
-    return iImplArray;
-    }
-
-void CPluginMgr::ReleasePlugins()
-  {
-  TInt i = iPlugins.Count();
-  while (i)
-	{
-	delete iPlugins[--i];
-	}
-  
-  i = iPluginDtorUids.Count();
-  
-  while(i)
-	  {
-	  REComSession::DestroyedImplementation(iPluginDtorUids[--i]);
-	  }
-  iPlugins.Reset();
-  iPluginDtorUids.Reset();
-  }
-
-void CPluginMgr::ForgetIdentityL(TIdentityId aId)
-  {
-  ImplementationsL();
-  
-  TInt i = iImplArray.Count();
-  while (i)
-	{
-	PluginL(iImplArray[--i]->ImplementationUid().iUid)->Forget(aId);
-	}
-  }
-
-void CPluginMgr::ReleaseImplInfo()
-  {
-  TInt i = iImplArray.Count();
-  while (i)
-	{
-	  delete iImplArray[--i];
-	}
-  
-  iImplArray.Reset();
-  }
-  
-void CPluginMgr::BuildAuthPluginsListL()
-	{
-	ReleasePlugins();
-  	ReleaseImplInfo();
-  	
-	ImplementationsL();
-  	CAuthPluginInterface* plugin = 0;
-  	for( TInt count=0; count < iImplArray.Count(); ++count)
-		{
-		plugin = CreatePluginImplementationL(iImplArray[count]->ImplementationUid().iUid);
-
-		CleanupStack::PushL(plugin);
-		User::LeaveIfError(iPlugins.InsertInOrder(plugin, SPluginOrder));
-		CleanupStack::Pop(plugin);
-		}
-	}
-
-CAuthPluginInterface* CPluginMgr::CreatePluginImplementationL(const TPluginId &aId)
-	{
-	TEComResolverParams resolverParams;
-	TBufC8<16> pluginIdTxt;
-	pluginIdTxt.Des().Format(_L8("%x"), aId);
-	pluginIdTxt.Des().UpperCase();
-	resolverParams.SetDataType(pluginIdTxt);
-		  
-	//To load plugins from sources other than ROM the patch 
-	// data KEnablePostMarketAuthenticationPlugins must be set to True.
-	TUint32 enablePostMarketPlugin = KEnablePostMarketAuthenticationPlugins;
-
-#ifdef __WINS__
-
-	// Default SymbianOS behavior is to only load auth plugins from ROM.
-	enablePostMarketPlugin = 0;
-
-	// For the emulator allow the constant to be patched via epoc.ini
-	UserSvr::HalFunction(EHalGroupEmulator, EEmulatorHalIntProperty,
-	(TAny*)"KEnablePostMarketAuthenticationPlugins", &enablePostMarketPlugin); // read emulator property (if present)
-
-#endif
-
-	TAny* plugin = 0;
-	TInt err = 0;
-	TUid dtor_ID_Key = TUid::Null();
-	if(enablePostMarketPlugin == 0) 
-	  	{
-	  	TRAP(err, plugin = 
-		REComSession::CreateImplementationL(KCAuthPluginInterfaceUid,
-											dtor_ID_Key,
-											resolverParams,
-											KRomOnlyResolverUid));
-	  	}
-		  
-	  else
-	  	{
-	  	TRAP(err, plugin = 
-		REComSession::CreateImplementationL(KCAuthPluginInterfaceUid,
-											dtor_ID_Key,
-											resolverParams));
-	  	}
-		  
-	 if (err == KErrNotFound)
-	    {
-	    err = KErrAuthServNoSuchPlugin;  
-	    }
-	 
-	 //Add key to plugin destructor keys list .
-	 TInt err2 =  iPluginDtorUids.Append(dtor_ID_Key);
-	 
-	 if(KErrNoMemory == err2)
-		 {
-		 CAuthPluginInterface* authPlugin = reinterpret_cast<CAuthPluginInterface*>(plugin);
-		 delete authPlugin;
-		 REComSession::DestroyedImplementation(dtor_ID_Key);
-		 User::LeaveNoMemory();
-		 }
-	 User::LeaveIfError(err);
-
-	return reinterpret_cast<CAuthPluginInterface*>(plugin);
-	}
-