homescreenpluginsrv/inc/hspsrequestclient.h
changeset 0 79c6a41cd166
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/inc/hspsrequestclient.h	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,255 @@
+/*
+* Copyright (c) 2002-2004 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:  
+*  
+*  ChspsRequestClient is a client-side implementation of  MhspsClientRequestService API-definition 
+*  of Homescreen Plugin Configuration Management Services. 
+*  ChspsRequestClient is intended to serve Rendering Engines with Application configuartion and plugin configurations
+*  and their associated resources. ChspsRequestClient will provide access to Homescreen Plugin configuration 
+*  database maintained by hspsThemeServer.
+*  Typical use-case in using ChspsRequestClient is that there is HSPS SAPI user with a instance of 
+*  CHspsConfigurationService. When Homescreen application is starting up, the provider of teh HSPS Sapi is created
+*  with instance of ChspsConfigurationService.  ChspsConfigurationService calls hspsGetODT() and retrieves application 
+*  configuartion. When request exists on server-side, the right one application configuration is delivered to client process. 
+*  Theme may include resources. Resourses are listed on Resource List which is delivered too by
+*  the same request. hspsThemeServer uses Symbian Central Repository to get match theme on the 
+*  request. ChspsRequestClient serves also resource accesses. In using file handle passing introduced 
+*  by Symbian Platform Security, it deliver a resource access to the client process.
+*  
+*  ChspsRequestClient includes asynchronous service for subscribing the changes of current theme. 
+*  These changes could be for e.g. theme status change (another theme is activated for the 
+*  application) or a theme update. Change-events must be subsribed by calling hspsGetODTUpdate(). 
+*  CHspsConfigurationService who was initiated ChspsRequestClient, must listen to
+*  the hspsThemeServer call-back events. Call-back events are delivered through 
+*  MhspsClientRequestServiceObserver::HandlehspsRequestClientMessage() function. 
+*  Subscribtion can be canceled by hspsCancelGetODTUpdate() at any time. ChspsRequestClient cancels 
+*  subscription automaticly on some cases, for instance, on theme status change; there is no reason 
+*  to continue subscription of changes of the theme which is not active any more - host application
+*  must reload the theme and then initiate the subscription again.
+*
+*  For more information, see HSPS Theme Management Service APIs documentation 
+*  and hspsThemeManagement.h, where MhspsClientRequestService API implemented by this class are defined.
+*  
+*  Version     : %version: 1 %
+*
+*/
+
+
+#ifndef __ChspsREQUESTCLIENT_H__
+#define __ChspsREQUESTCLIENT_H__
+
+#include <e32base.h>
+
+#include "hspsthememanagement.h"
+#include "hspsclientsession.h"
+#include "hspsresult.h"
+#include "hspsreqnotifparam.h"
+
+#ifdef HSPS_LOG_ACTIVE
+class ChspsLogBus;
+#endif
+
+/** hspsRequestClient Panic Category. */
+_LIT( KhspsRequestClient, "hspsRequestClient" );
+
+/** hspsRequestClient panic codes: */
+enum ThspsRequestClientPanics
+    {
+    EhspsRequestClientBadState
+    };
+
+class ChspsODT;
+class ChspsResource;
+class RhspsClientSession;
+class MhspsClientRequestService;
+class MhspsClientRequestServiceObserver;
+class ChspsResult;
+class ChspaRequestNotificationParams;
+
+/**
+ * Request client
+ *
+ * @lib hspsrequestclient.lib
+ * @since S60 5.0
+ * @ingroup group_hspsclients
+ */
+class ChspsRequestClient : public CActive, public MhspsClientRequestService
+    {
+
+    public: // Constructors and destructors
+        /**
+        * NewL.
+        * Two-phased constructor.
+        * Creates a ChspsClient object using two phase construction,
+        * and return a pointer to the created object.
+        * 
+        * @since S60 5.0
+        * @param aObserver The object to be used to
+        *                  handle updates from the server.
+        */
+        IMPORT_C static ChspsRequestClient* NewL(MhspsClientRequestServiceObserver& aObserver );
+
+        /**
+        * NewLC.
+        * Two-phased constructor.
+        * Creates a ChspsRequestClient object using two phase construction,
+        * and return a pointer to the created object.
+        * 
+        * @since S60 5.0
+        * @param aObserver The object to be used to
+        *                  handle updates from the server.
+        */
+        IMPORT_C static ChspsRequestClient* NewLC( MhspsClientRequestServiceObserver& aObserver );
+
+        /**
+        * ~ChspsRequestClient.
+        * 
+        * Destructor.
+        * Destroys the object and release all memory objects.
+        */
+        virtual ~ChspsRequestClient();
+
+    public: // New functions
+
+        /**
+        * From MhspsClientRequestService.
+        */
+        IMPORT_C ThspsServiceCompletedMessage hspsGetODT(TInt aAppUid, ChspsODT& aODT);
+        
+        /**
+        * From MhspsClientRequestService.
+        */
+        IMPORT_C ThspsServiceCompletedMessage hspsGetODTUpdate();
+        
+        /**
+        * From MhspsClientRequestService.
+        */
+        IMPORT_C ThspsServiceCompletedMessage hspsCancelGetODTUpdate();   
+        
+        /**
+        * From MhspsClientRequestService.
+        */
+        IMPORT_C ThspsServiceCompletedMessage hspsAccessResourceFile( 
+        		const TDesC& aResourceFileName,
+        		const ThspsConfiguration& aConfiguration,
+                RFile& aFile);    
+               
+        /**
+        * GethspsResult.
+        * 
+        * @since S60 5.0
+        * @param aResult is a ChspsResult object containing additional information of query result.
+        */
+        IMPORT_C void GethspsResult(ChspsResult& aResult);
+
+        /** 
+        * Sets a log bus when debugging has been enabled.
+        * Empty implementation if non HSPS_LOG_ACTIVE build.
+        * 
+        * @since S60 5.0 
+        * @param aLogBus Log bus to be set.
+        */
+        IMPORT_C void SetLogBus( void* aLogBus );        
+
+    protected: // Functions from base classes
+
+        /**
+        * From CActive, RunL.
+        * Callback function.
+        * Invoked to handle responses from the server.
+        */
+        void RunL();
+
+        /**
+        * From CActive, DoCancel.
+        * Cancels any outstanding operation.
+        */
+        void DoCancel();
+        
+        /**
+        * From CActive Called when asynchronous request has failed
+        * @since S60 3.1
+        */
+        TInt RunError( TInt aError );
+        
+    protected:
+        /**
+        * Sends a request to the server, retrieves a file path, internalizes the file
+        * and copies resources from the server to client's private folder
+        * @since S60 5.0
+        */
+        void CallGetOdtInFileL(
+        		const ThspsConfiguration& aConfiguration,
+        		ChspsODT& aODT );
+        
+        /**
+        * UpdatehspsResult. Updates iResult with latest result data coming on client request return.
+        */        
+        void UpdatehspsResult();
+        
+        /**
+        * UpdatehspsReqNotifParams. Updates iReqNotifParams with latest notification data coming on client request return.
+        */
+        void UpdatehspsReqNotifParams();
+        
+    private: // Constructors and destructors
+
+        /**
+        * ChspsRequestClient.
+        * Performs the first phase of two phase construction.
+        * @param aObserver The object to be used to
+        *                  handle updates from the server.
+        */
+        ChspsRequestClient( MhspsClientRequestServiceObserver& aObserver);
+
+        /**
+        * ConstructL.
+        * Performs the second phase construction
+        * ChspsRequestClient object.
+        */
+        void ConstructL();
+
+    private: // Members
+    
+        /**
+        * iSession, the time server session.
+        */
+        RhspsClientSession iSession;
+
+        /**
+        * iObserver, observer which handles updates from the server.
+        */
+        MhspsClientRequestServiceObserver& iObserver;    
+    
+    private: // Data
+        TBuf8<KMaxHeaderDataLength8> iHeaderData;
+        HBufC8* iElement;
+        TBuf8<KMaxResultDataLength8> iResultData;
+        ChspsResult* iResult;
+        ChspsRequestNotificationParams* iReqNotifParams;
+        TBuf8<KMaxReqNotifDataLength8> iReqNotifData;
+        ChspsODT* iODT;
+        TBool iODTValid;
+        CArrayPtrSeg<ChspsResource>* iResourceList;          
+
+#ifdef HSPS_LOG_ACTIVE
+        // Log bus. Not owned.        
+        ChspsLogBus* iLogBus;
+#endif        
+    };
+
+
+#endif //__ChspsCLIENT_H__
+
+// End of File