diff -r 7fdc9a71d314 -r 8ad140f3dd41 hti/hti_plat/hti_api/inc/HtiServicePluginInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hti/hti_plat/hti_api/inc/HtiServicePluginInterface.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 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: Interface defenition for HTI services +* +*/ + + +#ifndef SERVICEPLUGININTERFACE_H__ +#define SERVICEPLUGININTERFACE_H__ + +#include + +#include + +const TUid KHTIServiceInterfaceUid = {0x1020DEB7}; + + +class CHTIServicePluginInterface : public CBase, public MHtiMemoryObserver + { +public: //ECom specific methods (implemented as inline) + + /** + * Wraps ECom object instantitation + * plug-in loaded by its UID + * + * @param aUID service plugin implementation UDI + */ + static CHTIServicePluginInterface* NewL(const TUid aUID); + + /** + * Wraps ECom object instantitation + * default resovler is used + * + * @param aMatchString service plugin name + */ + static CHTIServicePluginInterface* NewL(const TDesC8& aMatchString); + + /** + * Wraps ECom object destruction + */ + virtual ~CHTIServicePluginInterface(); + +public: //Comm plugin interface methods + + /** + * This method is called by framework after the plugin was loaded and + * iDispatcher set. + */ + virtual void InitL(){}; + + /** + * Result indicates eiterh plug-in is able to process request + * (e.g. a plug-in doesn't have an outstanding request to async service). + * Framework calls this method before calling ProcessMessageL(). + * If plug-in is busy, request will be dispatched later. + * Typically, AO's CActive::IsActive() can be used + * in a overriden implementation. + * Default implementation returns EFalse. + */ + virtual TBool IsBusy(); + + /** + * Interface service + * implementation of service, should return ASAP. + * aMessage contan is service specific. + * + * @param aMessage message body destinated to a servive + * @param aPriority message priority + */ + virtual void ProcessMessageL(const TDesC8& aMessage, + THtiMessagePriority aPriority) = 0; + + virtual void Error(TInt /*aErrorCode*/, const TDesC8& /*aErrorDescription*/){}; + + /** + * Set dispatcher that used by services to send messages. + * + */ + virtual void SetDispatcher(MHtiDispatcher* aDispatcher); + +public: //from MHtiMemoryObserver + /** + * Empty implementation. + */ + virtual void NotifyMemoryChange(TInt /*aAvailableMemory*/){}; + +protected: + /** + * Pointer to a dispatcher. It is not availble during construction. + * If it should be used before starting process messages, InitL() + * must be overriden. + */ + MHtiDispatcher* iDispatcher; + +private: + /** + * Instance identifier key + */ + TUid iDtor_ID_Key; + }; + +#include + +#endif