diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/wappushfw/plugins/inc/CPushHandlerBase.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/plugins/inc/CPushHandlerBase.inl Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,162 @@ +// Copyright (c) 2001-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: +// Local includes +// +// + +/** + @file + @publishedPartner + @released +*/ + +// System includes +// +#include +#include + + +/** +Constructor. +*/ +inline CPushHandlerBase::CPushHandlerBase() +: CActive(EPriorityStandard) + { + } + + +/** +Destructor. +*/ +inline CPushHandlerBase::~CPushHandlerBase() + { + REComSession::DestroyedImplementation(iDtor_ID_Key); + } + + +/** +Finds and instantiates an ECom WAP Push Application plug-in that matches the +specified Application ID. + +@return +WAP Push Application plug-in that handles the specified Application ID. + +@param aMatchData +Application ID. +*/ +inline CPushHandlerBase* CPushHandlerBase::NewL(const TDesC& aMatchData) + { + return NewL(aMatchData, KUidPushHandlerBase); + } + + +/** +Finds and instantiates an ECom plug-in that implements an interface specialised +from CPushHandlerBase. + +This is a utility function for use by ECom interface classes that specialise +CPushHandlerBase, such as CContentHandlerBase. + +@param aMatchData +ECom match data. + +@param aInterfaceUid +UID of the required derived ECom interface. + +@return +WAP Push plug-in that handles the specified Application ID. +*/ +inline CPushHandlerBase* CPushHandlerBase::NewL(const TDesC& aMatchData, const TUid& aInterfaceUid) + { + // Convert match data to 8-bits + HBufC8* buf = HBufC8::NewLC(aMatchData.Length()); + TPtr8 data = buf->Des(); + data.Copy(aMatchData); + data.LowerCase(); // change to lower case + + // Set resolving parameters + TEComResolverParams resolverParams; + resolverParams.SetDataType(data); + resolverParams.SetWildcardMatch(ETrue); + + // Get the instantiation + CPushHandlerBase* pushHandler = REINTERPRET_CAST(CPushHandlerBase*, + REComSession::CreateImplementationL(aInterfaceUid, + _FOFF(CPushHandlerBase, iDtor_ID_Key), + resolverParams)); + CleanupStack::PopAndDestroy(buf); + return pushHandler; + } + + +/** +Specifies an interface to handle logging. + +Log messages are intended to aid debugging. + +@param aLog +Log interface. This is stored in iLog. +*/ +inline void CPushHandlerBase::SetLogger(MWapPushLog& aLog) + { + iLog = &aLog; + } + + +/** +Called by the framework to supply a CPluginKiller object. + +The plug-in calls CPluginKiller::KillPushPlugin() to delete itself when it +has completed handling a message. + +@param aPluginKiller +Plugin killer. This is stored in iPluginKiller. +*/ +inline void CPushHandlerBase::SetKiller(CPluginKiller& aPluginKiller) + { + iPluginKiller = &aPluginKiller; + } + +/** +Set the connection manager. + +@param aManager Reference to connection manager object to be set.*/ +inline void CPushHandlerBase::SetManager(MConnManObserver& aManager) + { + iManager = &aManager; + } + + +/** +Stores the passed TRequestStatus and sets it to KRequestPending. + +@param aStatus +Asynchronous status, stored in iConfirmStatus. +*/ +inline void CPushHandlerBase::SetConfirmationStatus(TRequestStatus& aStatus) + { + aStatus=KRequestPending; + iConfirmStatus = &aStatus; + } + +/** +Completes the stored asynchronous status with the specified error code. + +@param aErr +Error code. +*/ +inline void CPushHandlerBase::SignalConfirmationStatus(TInt aErr) + { + User::RequestComplete(iConfirmStatus, aErr); + }