diff -r 000000000000 -r 62f9d29f7211 webservices/wsframework/inc/sentransport.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webservices/wsframework/inc/sentransport.inl Thu Jan 07 16:19:19 2010 +0200 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2006 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: Inlines for the Transport ECOM plug-ins +* +*/ + + + + + + + + +namespace + { + _LIT(KPanic, "SenTransport"); + } + +// Interface's (abstract base class's) static factory method implementation. +// Asks ECOM plugin framework to instantiate appropriate concrete plugin +// implementation. +// +// Instantiates the default WSF transport: HTTP Channel plug-in +inline CSenTransport* CSenTransport::NewL(CSenTransportContext* apCtx) + { +#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES + const TUid KHttpChannelTransportPluginUid = {0x10274C74}; +#else + const TUid KHttpChannelTransportPluginUid = {0x101F974A}; +#endif + + TAny* constructorParameters = reinterpret_cast(apCtx); + + // Find implementation behind KHttpChannelTransportPluginUid + TAny* intf = REComSession::CreateImplementationL(KHttpChannelTransportPluginUid, + _FOFF (CSenTransport, + 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 CSenTransport* CSenTransport::NewL(const TDesC8& aCue, + CSenTransportContext* apCtx) + { +#ifndef RD_SEN_COMPILE_SIS_PACKAGE_FILES + const TUid KCSenTransportInterfaceUid = {0x10274C72}; +#else + const TUid KCSenTransportInterfaceUid = {0x101F9749}; +#endif + + TEComResolverParams resolverParams; + resolverParams.SetDataType(aCue); + resolverParams.SetWildcardMatch(EFalse); + + TAny* constructorParameters = reinterpret_cast(apCtx); + + // Find implementation for our interface. + // - KCSenTransportInterfaceUid is the UID of Transport ECOM plugin. + // - 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 (KCSenTransportInterfaceUid, + _FOFF (CSenTransport, + iDtor_ID_Key), + constructorParameters, + resolverParams); + + return reinterpret_cast (intf); + } + + +// Interface's (abstract base class's) destructor +inline CSenTransport::~CSenTransport() + { + // If in the NewL some memory is reserved for member data, it must be + // released here. + delete ipCtx; + ipCtx = NULL; + + // Inform the ECOM framework that this specific instance of the + // interface has been destroyed. + REComSession::DestroyedImplementation(iDtor_ID_Key); + } + +inline CSenTransport::CSenTransport(CSenTransportContext* apCtx, + TBool aSessionOwned): + CSenTransportBase(aSessionOwned), ipCtx(apCtx) + { + } + +inline MSenTransportContext& CSenTransport::Context() + { + __ASSERT_ALWAYS(ipCtx != NULL, User::Panic(KPanic, ETransportCtxNotInitialized)); + + return *ipCtx; + } + +// End of File