williamr@2: // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // Local includes williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: williamr@2: // System includes williamr@2: // williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: Constructor. williamr@2: */ williamr@2: inline CPushHandlerBase::CPushHandlerBase() williamr@2: : CActive(EPriorityStandard) williamr@2: { williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Destructor. williamr@2: */ williamr@2: inline CPushHandlerBase::~CPushHandlerBase() williamr@2: { williamr@2: REComSession::DestroyedImplementation(iDtor_ID_Key); williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Finds and instantiates an ECom WAP Push Application plug-in that matches the williamr@2: specified Application ID. williamr@2: williamr@2: @return williamr@2: WAP Push Application plug-in that handles the specified Application ID. williamr@2: williamr@2: @param aMatchData williamr@2: Application ID. williamr@2: */ williamr@2: inline CPushHandlerBase* CPushHandlerBase::NewL(const TDesC& aMatchData) williamr@2: { williamr@2: return NewL(aMatchData, KUidPushHandlerBase); williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Finds and instantiates an ECom plug-in that implements an interface specialised williamr@2: from CPushHandlerBase. williamr@2: williamr@2: This is a utility function for use by ECom interface classes that specialise williamr@2: CPushHandlerBase, such as CContentHandlerBase. williamr@2: williamr@2: @param aMatchData williamr@2: ECom match data. williamr@2: williamr@2: @param aInterfaceUid williamr@2: UID of the required derived ECom interface. williamr@2: williamr@2: @return williamr@2: WAP Push plug-in that handles the specified Application ID. williamr@2: */ williamr@2: inline CPushHandlerBase* CPushHandlerBase::NewL(const TDesC& aMatchData, const TUid& aInterfaceUid) williamr@2: { williamr@2: // Convert match data to 8-bits williamr@2: HBufC8* buf = HBufC8::NewLC(aMatchData.Length()); williamr@2: TPtr8 data = buf->Des(); williamr@2: data.Copy(aMatchData); williamr@2: data.LowerCase(); // change to lower case williamr@2: williamr@2: // Set resolving parameters williamr@2: TEComResolverParams resolverParams; williamr@2: resolverParams.SetDataType(data); williamr@2: resolverParams.SetWildcardMatch(ETrue); williamr@2: williamr@2: // Get the instantiation williamr@2: CPushHandlerBase* pushHandler = REINTERPRET_CAST(CPushHandlerBase*, williamr@2: REComSession::CreateImplementationL(aInterfaceUid, williamr@2: _FOFF(CPushHandlerBase, iDtor_ID_Key), williamr@2: resolverParams)); williamr@2: CleanupStack::PopAndDestroy(buf); williamr@2: return pushHandler; williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Specifies an interface to handle logging. williamr@2: williamr@2: Log messages are intended to aid debugging. williamr@2: williamr@2: @param aLog williamr@2: Log interface. This is stored in iLog. williamr@2: */ williamr@2: inline void CPushHandlerBase::SetLogger(MWapPushLog& aLog) williamr@2: { williamr@2: iLog = &aLog; williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Called by the framework to supply a CPluginKiller object. williamr@2: williamr@2: The plug-in calls CPluginKiller::KillPushPlugin() to delete itself when it williamr@2: has completed handling a message. williamr@2: williamr@2: @param aPluginKiller williamr@2: Plugin killer. This is stored in iPluginKiller. williamr@2: */ williamr@2: inline void CPushHandlerBase::SetKiller(CPluginKiller& aPluginKiller) williamr@2: { williamr@2: iPluginKiller = &aPluginKiller; williamr@2: } williamr@2: williamr@2: /** williamr@2: Set the connection manager. williamr@2: williamr@2: @param aManager Reference to connection manager object to be set.*/ williamr@2: inline void CPushHandlerBase::SetManager(MConnManObserver& aManager) williamr@2: { williamr@2: iManager = &aManager; williamr@2: } williamr@2: williamr@2: williamr@2: /** williamr@2: Stores the passed TRequestStatus and sets it to KRequestPending. williamr@2: williamr@2: @param aStatus williamr@2: Asynchronous status, stored in iConfirmStatus. williamr@2: */ williamr@2: inline void CPushHandlerBase::SetConfirmationStatus(TRequestStatus& aStatus) williamr@2: { williamr@2: aStatus=KRequestPending; williamr@2: iConfirmStatus = &aStatus; williamr@2: } williamr@2: williamr@2: /** williamr@2: Completes the stored asynchronous status with the specified error code. williamr@2: williamr@2: @param aErr williamr@2: Error code. williamr@2: */ williamr@2: inline void CPushHandlerBase::SignalConfirmationStatus(TInt aErr) williamr@2: { williamr@2: User::RequestComplete(iConfirmStatus, aErr); williamr@2: }