diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/sensecuritymechanism.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/sensecuritymechanism.inl Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2002-2005 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: Defines the ECom interface for Sen Security Mechanism plug-ins +* +*/ + + + + + + + + +// Interface's (abstract base class's) static factory method implementation. +// Asks ECOM plugin framework to instantiate appropriate concrete plugin +// implementation. +inline CSenSecurityMechanism* CSenSecurityMechanism::NewL(MSenCoreServiceManager& aManager) + { + // Instantiate the default SASL plugin - AnonymousSasl +#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES + const TUid KAnonymousSaslPluginUid = {0x101F96FD}; +#else + const TUid KAnonymousSaslPluginUid = {0x101F9734}; +#endif + + TAny* constructorParameters = reinterpret_cast(&aManager); + + // Find implementation behind KAnonymousSaslPluginUid + TAny* intf = REComSession::CreateImplementationL (KAnonymousSaslPluginUid, + _FOFF (CSenSecurityMechanism, + iDtor_ID_Key), + constructorParameters); + + return reinterpret_cast (intf); + } + +// Interface's (abstract base class's) static factory method implementation. +// Asks ECOM plugin framework to instantiate appropriate concret plugin +// implementation. +inline CSenSecurityMechanism* CSenSecurityMechanism::NewL(const TDesC8& aMatch, + MSenCoreServiceManager& aManager) + { +#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES + const TUid KCSenSecurityMechanismInterfaceUid = {0x101F96FC}; +#else + const TUid KCSenSecurityMechanismInterfaceUid = {0x101F9733}; +#endif + + TEComResolverParams resolverParams; + resolverParams.SetDataType(aMatch); + resolverParams.SetWildcardMatch(EFalse); + + TAny* constructorParameters = reinterpret_cast(&aManager); + + // Find implementation for our interface. + // - KCSenSecurityMechanismInterfaceUid is the UID of + // SASL SECURITY MECHANISM ECOM interface. + // + // - This call will leave, if the plugin architecture + // cannot find implementation. + // - The returned pointer points to one of our interface implementation + // instances. + TAny* intf = REComSession::CreateImplementationL (KCSenSecurityMechanismInterfaceUid, + _FOFF (CSenSecurityMechanism, + iDtor_ID_Key), + constructorParameters, + resolverParams); + + return reinterpret_cast (intf); + } + + +// Interface's (abstract base class's) destructor +inline CSenSecurityMechanism::~CSenSecurityMechanism() + { + // we need to call this, because destroying is too late + // in virtual destructor in super class (virtual destructor & ECOM) + // If superclass resets the contents, the memory will be in illegal + // state in case that there is ONE or MORE password transform ECOM + // instancies inside this array(!) -> this will cause crash in + // unknown location, typically in next destructor. + iTransforms.ResetAndDestroy(); // were owned + + // Inform the ECOM framework that this specific instance of the + // interface has been destroyed. + REComSession::DestroyedImplementation (iDtor_ID_Key); + } + +inline CSenSecurityMechanism::CSenSecurityMechanism(MSenCoreServiceManager& aServiceManager) + :iServiceManager(aServiceManager) + { + } + +// End of File