// 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 __CCONTENTHANDLERBASE_H__
#define __CCONTENTHANDLERBASE_H__
// System includes
//
#include <e32base.h>
#include <msvstd.h>
#include <push/cpushhandlerbase.h>
#include <push/pushmessage.h>
// Constants
//
/** ECom interface UID for WAP Push Content Handler plug-ins. */
const TUid KUidPushContentHandlerBase	= { 0x101F3E5E };
/** 
Abstract base class for WAP Push Content Handler plug-ins.
A WAP Push Content Handler plug-in processes a WAP Push message that contains 
data of a specific media type. A Content Handler plug-in is loaded by a WAP Push Application
Handler plug-in (CPushHandlerBase-derived object), and the message is passed to handle 
through HandleMessageL().
A WAP Push Content Handling plugin is implemented as an ECom plug-in object derived from 
the CContentHandlerBase interface.
Each Content Handler plug-in should specify the media type that it handles. Content Handler 
plug-ins can handle multiple media types: for example, a plug-in to handle SI messages can
specify it's media type as "text/vnd.wap.si||application/vnd.wap.sic".
@publishedPartner
@released
*/
class CContentHandlerBase : public CPushHandlerBase
	{
public:
	inline static CContentHandlerBase* NewL(const TDesC& aMatchData);
	inline virtual ~CContentHandlerBase();
	inline void SetParent(TMsvId aParentID);
protected:	// Methods
	inline CContentHandlerBase();
	inline void Complete(TInt aError);
	inline void IdleComplete();
protected:
	/** Parent message server entry. */
	TMsvId				iParentID;
	/** Unused. */
	TInt				iState; //state machine
	/** The derived class should set this to ETrue on receiving an asynchronous request. */
	TBool				iAcknowledge;
	/** Unused. */
	CPushMessage*		iMessage;
	};
#include <push/ccontenthandlerbase.inl>
#endif    // __CCONTENTHANDLERBASE_H__