diff -r 000000000000 -r c53acadfccc6 metadataengine/server/inc/mdsserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/metadataengine/server/inc/mdsserver.h Mon Jan 18 20:34:07 2010 +0200 @@ -0,0 +1,339 @@ +/* +* Copyright (c) 2005-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: This is Metadata engine server file* +*/ + +#ifndef __MDSSERVER_H__ +#define __MDSSERVER_H__ + +// INCLUDE FILES +#include +#include + +#include "mdccommon.pan" + +#include "mdsdiskspacenotifier.h" +#include "mdebackuprestoreobserver.h" +#include "mdsshutdownobserver.h" + +// FORWARD DECLARATIONS +class CMdSObjectLockList; +class CMdSNotifier; +class CMdSMaintenanceEngine; +class CMdSManipulationEngine; +class CMdSSqLiteConnection; +class CMdEBackupRestoreWatcherAO; +class CMdsSchema; +class CMdCSerializationBuffer; + +// CLASS DECLARATION + +/** +* CMdSServer. +* An instance of class CMdSServer is the main server class +*/ +class CMdSServer : public CPolicyServer, public MMdSDiskSpaceNotifierObserver, + public MMdEBackupRestoreObserver, + public MMDSShutdownObserver + + { + public : // From MMdSDiskSpaceNotifierObserver + void HandleDiskSpaceNotificationL(TDiskSpaceDirection aCrossDirection); + + void HandleDiskSpaceError(TInt aError); + + public: // From MMdEBackupRestoreObserver + // Called when backup & restore watcher notices starting back up. + void HandleBackup(); + // Called when backup & restore watcher notices starting restore. + void HandleRestore(); + // Called when backup or watcher is completed and normal operation continues. + void ResumeOperation(); + + public: // MMDSShutdownObserver + + void ShutdownNotification(); + + void RestartNotification(); + + public : // Constructors and destructors + + /** + * Constructs a new metadata server implementation. + * + * @return metadata server implementation + */ + static CMdSServer* NewL(); + + /** + * Constructs a new metadata server implementation and leaves the server implementation + * in the cleanup stack. + * + * @return metadata server implementation + */ + static CMdSServer* NewLC(); + + /** + * Destructor. + */ + virtual ~CMdSServer(); + + public: // New functions + + /** + * ThreadFunction. + * Main function for the server thread. + * @param aStarted A semaphore to be flagged when server + * has been started. + * @return Error code. + */ + static TInt ThreadFunction( TAny* aStarted ); + + /** + * IncrementSessions. + * Increments the count of the active sessions for this server. + */ + void IncrementSessions(); + + /** + * DecrementSessions. + * Decrements the count of the active sessions for this server. + * If no more sessions are in use the server terminates. + */ + void DecrementSessions(); + + /** + * Reference to the schema + */ + CMdsSchema& Schema(); + + /** + * Get lock list + */ + CMdSObjectLockList& LockList(); + + /** + * Get notifier + */ + CMdSNotifier& Notifier(); + + /** + * Get maintenance engine + */ + + CMdSMaintenanceEngine& Maintenance(); + + /** + * Get manipulator engine + */ + + CMdSManipulationEngine& Manipulate(); + + /** + * PanicClient. + * Panics the client. + * @param aMessage The message channel to the client. + * @param aReason The reason code for the panic. + */ + static void PanicClient( const RMessage2& aMessage, TInt aReason ); + + TBool DiskFull() const; + + TBool BackupOrRestoreRunning() const; + + TInt SetHarvestingPrioritizationChunkL( const RMessagePtr2 aMessage, TInt aParam ); + + TInt AddHarvestingPrioritizationObserver( RMessagePtr2 aMessage ); + + TInt CancelHarvestingPrioritizationObserver(); + + TBool ReserveSpaceHarvestingPrioritizationUri( const TDesC16& aUri ); + + TBool StartAddingHarvestingPrioritizationUrisL(); + + TBool AddHarvestingPrioritizationUriL( TDesC16& aUri ); + + void NotifyHarvestingPrioritizationObserver( TInt aStatus ) const; + + /** + * ResetDBL + * resets DB, should be called only in DEBUG build + */ + TInt ResetDBL(); + + protected: // Functions from base classes + + /** + * From CActive, RunError. + * Processes any errors. + * @param aError The leave code reported. + * @result return KErrNone if leave is handled. + */ + TInt RunError( TInt aError ); + + /** + * From CPolicyServer. + * Handles capability checking for certain server requests. + * @result return one of TCustomResult set {EPass, EFail, EAsync}. + */ + CPolicyServer::TCustomResult CustomSecurityCheckL( + const RMessage2 &aMsg, + TInt &aAction, + TSecurityInfo &aMissing); + + /** + * From CPolicyServer. + * Handles xxxx. + * @result return one of TCustomResult set {EPass, EFail, EAsync}. + */ + CPolicyServer::TCustomResult CustomFailureActionL( + const RMessage2 &aMsg, + TInt aAction, + const TSecurityInfo &aMissing); + + + private: // Constructors and destructors + + /** + * CMdEServer. + * C++ default constructor. + * @param aPriority priority for this thread. + */ + CMdSServer( TInt aPriority ); + + /** + * ConstructL. + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * InitializeL + * Do part of internal resources initializations + * used together with DeInitialize to ResetDB functionality + */ + void InitializeL(); + + /** + * DeInitializeL + * Do part of internal resources deinitializations + * used together with Initialize to ResetDB functionality + */ + void DeInitializeL(); + + void CheckInitSriptL(); + + private: // New methods + + /** + * PanicServer. + * Panics the server. + * @param aPanic The panic code. + */ + static void PanicServer( TMetadataPanic aPanic ); + + /** + * ThreadFunctionL. + * Second stage startup for the server thread. + */ + static void ThreadFunctionL(); + + friend TInt E32Main(); + + private: // Functions from base classes + + /** + * From CServer, NewSessionL. + * Creates a time server session. + * @param aVersion The client version. + * @return Pointer to new session. + */ + CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const; + + private: // Data + + /** + * iSessionCount, the number of session owned by this server. + */ + TInt iSessionCount; + + /** + * class for installing and maintaining the database + */ + CMdSMaintenanceEngine* iMaintenance; + + /** + * Default DB connection for default namespace. + */ + CMdSSqLiteConnection* iDefaultDBConnection; + + /** + * The internal schema + */ + CMdsSchema* iSchema; + + /** + * Server status. If other than KErrNone, prevents client sessions. + */ + TInt iServerErrorStatus; + + /** + * Locked object list. + */ + CMdSObjectLockList* iLockList; + + /** + * Notifier engine + */ + CMdSNotifier* iNotifier; + + /** + * Object adding, removing and modification. + * upper proxy layer, provides validation and such. + */ + CMdSManipulationEngine* iManipulate; + + /** + * Garbage collector notifier for situations where free disk space is getting low. + */ + CMdSDiskSpaceNotifierAO* iDiskSpaceGarbageCollectorNotifier; + + /** + * Notifier for situations where free disk space runs out. + */ + CMdSDiskSpaceNotifierAO* iDiskFullNotifier; + + CMdEBackupRestoreWatcherAO* iBURWatcher; + + TBool iBackupOrRestoreRunning; + + RChunk iHarvestingPrioritizationChunk; + CMdCSerializationBuffer* iHarvestingPrioritizationSerializationBuffer; + TUint32 iHarvestingPrioritizationLimit; + TInt32 iHarvestingPrioritizationUriCount; + TBool iHarvestingPrioritizationLocked; // adding of new URIs allowed + + TInt32 iHarvestingPrioritizationBufferUriCount; + TUint32 iHarvestingPrioritizationBufferUriOffset; + + RMessagePtr2 iHarvestingPrioritizationObserver; + + CMDSShutdownObserver* iShutdownObserver; + + TBool iShutdown; + }; + +#endif // __MDSSERVER_H__ + +// End of File