harvester/server/inc/harvesterserver.h
changeset 0 c53acadfccc6
child 60 79f826a55db2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/server/inc/harvesterserver.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,249 @@
+/*
+* Copyright (c) 2004-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:  Harvester server*
+*/
+
+#ifndef __CHARVESTERSERVER__
+#define __CHARVESTERSERVER__
+
+#include <e32cmn.h>
+#include <apmrec.h>
+
+#include "mdeharvestersession.h"
+#include "contextengine.h"
+
+#include "harvesterplugin.h"
+#include "composerplugin.h"
+#include "harvesterplugininfo.h"
+#include "harvesterqueue.h"
+#include "harvesterao.h"
+#include "pauseobserverao.h"
+#include "harvestershutdownobserver.h"
+
+_LIT( KDefaultPanicName, "Harvester Server Panic" );
+_LIT( KHarvesterServerName, "HarvesterServer" );
+
+class CHarvesterServer : public CPolicyServer,
+						 public MHarvesterStatusObserver,
+						 public MHarvesterShutdownObserver
+	{
+
+    public:
+
+	    /**
+	    * Constructs a new harvester server implementation.
+	    *
+	    * @return  Harvester server implementation
+	    */
+        static CHarvesterServer* NewL();
+
+	    /**
+	    * Constructs a new harvester server implementation and leaves the server implementation
+	    * in the cleanup stack.
+	    *
+	    * @return  Harvester server implementation.
+	    */
+        static CHarvesterServer* NewLC();
+        
+        /**
+        * C++ Constructor.
+        * @param aPriority  Server process priority.
+        * @param aPolicy  Server policies.
+        * @param aType  Indicates what session type server supports .
+        */
+        CHarvesterServer( TInt aPriority, const TPolicy& aPolicy, TServerType aType );
+ 		
+ 		/**
+ 		* 2nd-phase construction, called by NewLC()
+ 		*/
+ 		void ConstructL();
+ 		
+	    /**
+	    * Destructor.
+	    */
+        virtual ~CHarvesterServer();
+        
+        /**
+        * Public method to start the server.
+        * @param aNone  Not used.
+        * @return Error code.
+        */
+        static TInt ThreadFunction( TAny* aNone );
+        
+        /**
+        * Method used to panic the client.
+        * @param aMessage  Message that is received from client.
+        * @param aPanic  Panic code which to raise on client side.
+        * @param aPanicDescription  Description of the panic.
+        */
+        static void PanicClient( const RMessage2& aMessage, TInt aPanic,
+        		const TDesC& aPanicDescription = KDefaultPanicName );
+
+        /**
+        * Method used to panic the server.
+        * @param aPanic  Panic code which to raise.
+        * @param aPanicDescription  Description of the panic.
+        */
+        static void PanicServer( TInt aPanic, const TDesC& aPanicDescription = KDefaultPanicName );
+
+        /**
+        * Method used to pause the server.
+        * @param aMessage  Message which was received from the client side.
+        */
+		void Pause( const RMessage2& aMessage );
+
+        /**
+        * Method used to resume the operation of the server.
+        * @param aMessage  Message which was received from the client side.
+        */				
+		void Resume( const RMessage2& aMessage );
+		
+        /**
+         * Method used to pause the server.
+         */
+ 		void Pause();
+
+         /**
+         * Method used to resume the operation of the server.
+         */				
+ 		void Resume();
+ 		
+        /**
+        * Method used to initiate harvesting of a file.
+        * @param aMessage  Message which was received from the client side.
+        */             
+		void HarvestFile( const RMessage2& aMessage );
+
+        /**
+        * Method used to initiate harvesting of a file.
+        * @param aMessage  Message which was received from the client side.
+        */             
+        void HarvestFileWithUID( const RMessage2& aMessage );
+		
+        /**
+        * Register a processes's origin value.
+        * @param aMessage  Message which was received from the client side.
+        */             
+        void RegisterProcessOrigin( const RMessage2& aMessage );
+
+        /**
+        * Unregister a process origin mapping.
+        * @param aMessage  Message which was received from the client side.
+        */             
+        void UnregisterProcessOrigin( const RMessage2& aMessage );
+
+        /**
+         * Register a harvesting complete from server
+         * @param aMessage  Message which was received from the client side.
+         */ 
+        TInt RegisterHarvestComplete( const CHarvesterServerSession& aSession, const RMessage2& aMessage );
+        
+        /**
+         * Unregister a harvesting complete from server
+         * @param aSession harvester server session.
+         */ 
+        TInt UnregisterHarvestComplete( const CHarvesterServerSession& aSession);
+        
+        /**
+         * Register a harvester event from server
+         * @param aMessage  Message which was received from the client side.
+         */ 
+        void RegisterHarvesterEvent( const RMessage2& aMessage );
+        
+        /**
+         * Unregister a harvester event from server
+         * @param aMessage  Message which was received from the client side.
+         */ 
+        void UnregisterHarvesterEvent( const RMessage2& aMessage );
+
+    public: // MHarvesterStatusObserver
+		virtual void PauseReady( TInt aError );
+		virtual void ResumeReady( TInt aError );
+        
+        /**
+         * Returns the ID of the latest registered event observer.
+         * @param aMessage  Message which was received from the client side.
+         */
+        void GetLastObserverId( const RMessage2& aMessage );
+        
+    public: // MHarvesterShutdownObserver
+        
+        void ShutdownNotification();
+        
+        void RestartNotification();
+        
+    protected: // Functions from base classes
+
+        /**
+        * From CPolicyServer.
+        * Handles capability checking for certain server requests.
+        * @param aMsg  Message which was received from the client side
+        * @param aAction  
+        * @param aMissing
+        * @result return one of TCustomResult set {EPass, EFail, EAsync}.
+        */
+        CPolicyServer::TCustomResult CustomSecurityCheckL( 
+            const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing );
+
+        /**
+        * From CPolicyServer.
+        * Handles failure
+        * @param aMsg  Message which was received from the client side
+        * @param aAction  
+        * @param aMissing
+        * @result return one of TCustomResult set {EPass, EFail, EAsync}.
+        */
+        CPolicyServer::TCustomResult CustomFailureActionL(
+            const RMessage2 &aMsg, TInt aAction, const TSecurityInfo &aMissing );
+
+	private:
+	   
+	    /**
+         * Method that initializes the server.
+         */
+		static void ThreadFunctionL();
+
+	    /**
+         * RunError.
+         * @param aError  Error which has occurred
+         * @return  Error code - how operation should continue
+         */
+		TInt RunError( TInt aError );
+	    
+	    /**
+         * Method used to create new server session.
+         * @param  Mandatory Client/Server framework parameter - not used
+         * @param  Mandatory Client/Server framework parameter - not used
+         */		
+		CSession2* NewSessionL( const TVersion&, const RMessage2& ) const;
+		
+	private:
+
+	    /**
+         * Active Object which runs the harvesting operation
+         */		
+		CHarvesterAO* iHarvesterAO;
+		
+		const RMessage2* iMessage;
+		
+		/**
+		 * Pause P&S observer
+		 */
+		CPauseObserverAO* iPauseObserverAO;
+			    
+		CHarvesterShutdownObserver* iShutdownObserver;	    	  
+
+    };
+
+#endif