diff -r 000000000000 -r 8e480a14352b messagingfw/wappushfw/plugins/inc/CPushHandlerBase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/plugins/inc/CPushHandlerBase.h Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,144 @@ +// 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: +// + +/** + @file + @publishedPartner + @released +*/ + +#ifndef __CPUSHHANDLERBASE_H__ +#define __CPUSHHANDLERBASE_H__ + +// System includes +#include + +// Forward class declarations +class CPushMessage; +class CPluginKiller; +class MWapPushLog; +class MConnManObserver; + +/** ECom interface UID for WAP Push Application plug-ins. */ +const TUid KUidPushHandlerBase = { 0x101F3E5A }; + +/** +Abstract base class for WAP Push Application plugins. + +A WAP Push Application plugin is implemented as an ECom plug-in object that +derives from this interface. Each plugin specifies in its ECom IMPLEMENTATION_INFO +default_data field the Push Application IDs that it should handle. When the +WAP Push Framework receives a push message, it examines the message's Application +ID, and loads the appropriate plug-in to handle the message with HandleMessageL(). + +A plug-in can handle multiple Application IDs. Application IDs can be specified +as URNs or WINA (http://www.wapforum.org/wina/push-app-id.htm) values. For +example, a plug-in to handle MMS would set its default_data to "x-wap-application:mms.ua||0x00000004". + +A plug-in must destroy itself when it is has finished handling the message. +The framework supplies a CPluginKiller object that the plug-in calls to do +this. + +@publishedPartner +@released +*/ +class CPushHandlerBase : public CActive + { +public: // Methods + + inline static CPushHandlerBase* NewL(const TDesC& aMatchData); + + inline static CPushHandlerBase* NewL(const TDesC& aMatchData, const TUid& aInterfaceUid); + + inline virtual ~CPushHandlerBase(); + + //Async. Functions + /** + Handles a push message asynchronously. + + Implementations should store the passed aStatus using SetConfirmationStatus(), + and when handling is complete, complete it with SignalConfirmationStatus(). + + @param aPushMsg + Push message. Ownership of the message is passed to the object. + + @param aStatus + Asynchronous status word + */ + virtual void HandleMessageL(CPushMessage* aPushMsg,TRequestStatus& aStatus) =0; + + /** + Cancels an outstanding HandleMessageL() call. + */ + virtual void CancelHandleMessage() =0; + + //Sync. Functions + /** + Handles a push message synchronously. + + @param aPushMsg + Push message. Ownership of the message is passed to the object. + */ + virtual void HandleMessageL(CPushMessage* aPushMsg) =0; + + inline void SetLogger(MWapPushLog& aLog); + + inline void SetKiller(CPluginKiller& aPluginKiller); + + inline void SetManager(MConnManObserver& aManager); + +protected: // Methods + + CPushHandlerBase(); + + void SetConfirmationStatus(TRequestStatus& aStatus); + + void SignalConfirmationStatus(TInt aErr); + +protected: // Attributes + + /** Plugin killer utility object. */ + CPluginKiller* iPluginKiller; + + /** Log interface. */ + MWapPushLog* iLog; + + /** connection manager */ + MConnManObserver* iManager; + + /** HandleMessageL() asynchronous status word. */ + TRequestStatus* iConfirmStatus; + +private: // Attributes + + /** A unique UID used in interface destruction */ + TUid iDtor_ID_Key; + +private: // BC-proofing + + /** Reserved for future expansion */ + virtual void CPushHandlerBase_Reserved1() =0; + + /** Reserved for future expansion */ + virtual void CPushHandlerBase_Reserved2() =0; + + /** Reserved for future expansion */ + TAny* iCPushHandlerBase_Reserved; + + }; + +#include + +#endif // __PUSHBASEHAND_H__