--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/resourcemgmt/hwresourcesmgr/server/inc/HWRMPluginHandler.h Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2006-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:
+*
+*/
+
+
+
+
+#ifndef HWRMPLUGINHANDLER_H
+#define HWRMPLUGINHANDLER_H
+
+// INCLUDES
+#include <e32base.h>
+#include "HWRMPluginService.h"
+#include "HWRMPluginTransactionList.h"
+#include "HWRMGenericTimer.h"
+
+// CONSTANTS
+// None
+
+// MACROS
+// None
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+class CHWRMService;
+
+// CLASS DECLARATIONS
+
+/**
+ * Callback interface for the server side plugin handler
+ */
+ class MHWRMIndicationHandler
+ {
+ public:
+
+ /**
+ * Method to return events from plugin handler
+ *
+ * @param aId The indication ID
+ * @param aData Data associated with the indication
+ *
+ */
+ virtual void ProcessIndicationL( const TUint32 aId, TDesC8& aData ) = 0;
+ };
+
+/**
+* This class contains ongoing plugin operation data.
+* It is used as a struct.
+*/
+class THWRMTransactionData : public THWRMPluginTransactionListItem
+ {
+ public:
+
+ CHWRMService* iCompletionCallback; // Pointer to currently using service. Not owned.
+ TTime iObsoletionTime; // Time after which the transaction is obsolete
+
+ /**
+ * Convenience constructor
+ */
+ THWRMTransactionData(CHWRMService* aCompletionCallback,
+ TUint8 aTransId,
+ TInt aCommandId,
+ const TTime& aObsoletionTime)
+ : THWRMPluginTransactionListItem(aTransId, aCommandId),
+ iCompletionCallback(aCompletionCallback),
+ iObsoletionTime(aObsoletionTime)
+ {
+ };
+
+ /**
+ * Virtual destructor.
+ */
+ virtual ~THWRMTransactionData()
+ {
+ // iCompletionCallback not owned so not cleaned. Just NULL it to make pc-lint happy.
+ iCompletionCallback = NULL;
+ };
+ };
+
+/**
+* Hardware Resource Manager server side plugin
+* handler implementation.
+*
+*/
+class CHWRMPluginHandler : public CBase,
+ public MHWRMPluginCallback,
+ public MHWRMGenericTimerCallback
+
+ {
+ public: // Constructors and Destructor
+
+ /**
+ * Constructor method for instance.
+ *
+ * @param aMatch Determines the API that the loaded plugin implements.
+ * @param aRequestTimeout Timeout in microseconds for requests
+ */
+ static CHWRMPluginHandler* NewL(const TDesC8& aMatch, TInt aRequestTimeout);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CHWRMPluginHandler();
+
+ public: // New functions
+
+ /**
+ * Method to invoke a particular command in the plugin.
+ * Only one concurrent request is supported, will leave
+ * with KErrNotSupported if request is attempted while
+ * another is executing
+ *
+ * @param aCommandId Command ID
+ * @param aData Data associated with command
+ * @param aCompletionCallback Callback for completion.
+ * If NULL, no callback is attempted.
+ * @return Transaction ID (can be used later to cancel)
+ * Returns zero if transaction was already completed.
+ */
+ TUint8 ProcessCommandL( TInt aCommandId,
+ TDesC8& aData,
+ CHWRMService* aCompletionCallback);
+
+ /**
+ * Method to cancel currently executing command
+ */
+ void CancelCommandL( TUint8 aTransId );
+
+ /**
+ * Registers a handler for receiving HWRM plug-in indications
+ *
+ * @param aCallback The indication handler to be registered
+ */
+ void RegisterForIndications(MHWRMIndicationHandler* aCallback);
+
+ /**
+ * Deregisters handlers for receiving HWRM plug-in indications
+ *
+ * @param aCallback The indication handler to be deregistered
+ */
+ void DeregisterForIndications(MHWRMIndicationHandler* aCallback);
+
+ // MHWRMPluginCallback callback methods
+
+ /**
+ * Method to return data in response to a message from a HWRM plugin.
+ *
+ * @param aCommandId Command identifier
+ * @param aTransId Unique transcation identifier
+ * @param aData Data returned from call
+ * Since none of the commands require return value,
+ * this package contains standard TInt error code.
+ */
+ void ProcessResponseL( TInt aCommandId,
+ TUint8 aTransId,
+ TDesC8& aData );
+ /**
+ * Method to return indications from HWRM plugin.
+ *
+ * @param aIndId An indication ID
+ * @param aData Data associated with the event ID.
+ */
+ void EventL( const TUint32 aIndId, TDesC8& aData );
+
+ // From MHWRMGenericTimerCallback
+ virtual void GenericTimerFired(TInt aTimerId, TBool aCutOff);
+
+ private:
+
+ /**
+ * C++ default constructor.
+ * @param aRequestTimeout Timeout in microseconds for requests
+ */
+ CHWRMPluginHandler(TInt aRequestTimeout);
+
+ /**
+ * This 2nd phase constructor.
+ *
+ * @param aMatch Matching parameter used to determine correct
+ * ECom implemetation
+ */
+ void ConstructL( const TDesC8& aMatch );
+
+ private: // data
+
+ CHWRMPluginService* iPlugin; // Reference to plugin
+ TUint8 iTransIdCounter; // Counter to create aTransIds
+ CHWRMPluginTransactionList* iTransactionList; // List of open transactions
+ CHWRMGenericTimer* iPluginTimer; // Plugin call timeout timer.
+ TTimeIntervalMicroSeconds32 iRequestTimeout; // Maximum time request can be open.
+
+ RPointerArray<MHWRMIndicationHandler> iIndicationCallbacks; // elements not owned
+ };
+
+#endif // HWRMPLUGINHANDLER_H
+
+// End of File