diff -r 000000000000 -r c53acadfccc6 harvester/server/inc/harvesterserver.h --- /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 +#include + +#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