diff -r 7fdc9a71d314 -r 8ad140f3dd41 hti/hti_plat/hti_api/inc/HtiDispatcherInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hti/hti_plat/hti_api/inc/HtiDispatcherInterface.h Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,138 @@ +/* +* 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: Definition of MDispatcher interface that used +* to dispatch incoming messages to servers +* and outcoming to host client. +* MDispatcher* should be used by services to send outcoming +* messages +* +*/ + + +#ifndef DISPATCHERINTERFACE_H__ +#define DISPATCHERINTERFACE_H__ + +#include + +class CHtiMessage; +class CConsoleBase; + +enum THtiMessagePriority + { + EHtiPriorityDefault = 0, + EHtiPriorityData = 0, + EHtiPriorityControl = 2 + }; + +const TInt KErrorDescriptionMaxLength = 118; + +/** +* Observer interface that should be implemented by plugin if it wants +* to resend message failed due to KErrNoMemory. +**/ +class MHtiMemoryObserver + { +public: + /** + * + * This function called by the dispatcher after plug-in request + * (@see MHtiDispatcher::AddMemoryObserver()) every time + * when some message was removed from the outgoing queue. + * + * @param aAvailableMemory amount of memory currently available for + * outgoing messages + **/ + virtual void NotifyMemoryChange(TInt aAvailableMemory) = 0; + }; + +/** +* Interface to the HTI dispatcher used by service plug-ins for message +* sending. +**/ +class MHtiDispatcher + { +public: + + /** + * + * Send message from the service back to host client. + * Transfer ownership of aMessage. + * The function adds messages to the outgoing queue. + * Message will be actualy sent later. + * Function can return KErrNoMemory if there is not enough memory to + * add it to the queue. + * Plug-in use AddMemoryObserver to be notified later when memory + * will be available to continue data transfer. + * + * @param aMessage contain server-specific data + * @param aTargetServiceUid service UID + * @param aWrappedFlag shoud set to ETrue if message should be + * wrapped by security manager + * @param aPriority message priority + * + * @return KErrNone if message was succesfully added to the outgoing queue + * KErrNoMemory when there is not enough memory. + */ + virtual TInt DispatchOutgoingMessage( TDesC8* aMessage, + const TUid aTargetServiceUid, + TBool aWrappedFlag, + THtiMessagePriority aPriority ) = 0; + + virtual TInt DispatchOutgoingMessage(TDesC8* aMessage, + const TUid aTargetServiceUid) = 0; + + virtual TInt DispatchOutgoingErrorMessage(TInt aErrorCode, + const TDesC8& aErrorDescription, + const TUid aTargetServiceUid) = 0; + /** + * Adds memory observer. + * + * @param anObserver memory observer + */ + virtual void AddMemoryObserver(MHtiMemoryObserver* anObserver) = 0; + + /** + * Removes memory observer. + * + * @param anObserver memory observer + */ + virtual void RemoveMemoryObserver(MHtiMemoryObserver* anObserver) = 0; + + /** + * Returns tha amount of currenly available memory for messages. + */ + virtual TInt GetFreeMemory() = 0; + + /** + * Notifis dispatcher that some async request is over. + * Should be used when plug-in uses async services + * and enters in a busy state (IsBusy() returns true) + * Should be called when plug-in is able to process new messages again + */ + virtual void Notify( TInt anError ) = 0; + + /* + * Getter for the HTI console + */ + virtual CConsoleBase* GetConsole() = 0; + + /* + * Shutdown HTI and reboot the device. + * + * Called from service plug-ins or from EHtiReboot HtiSystem command + */ + virtual void ShutdownAndRebootDeviceL() = 0; + }; + +#endif