harvester/blacklistserver/inc/blacklistserver.h
changeset 0 c53acadfccc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/blacklistserver/inc/blacklistserver.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,273 @@
+/*
+* Copyright (c) 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 __BLACKLISTSERVER_H__
+#define __BLACKLISTSERVER_H__
+
+// SYSTEM INCLUDE
+#include <e32base.h>    // CTrapCleanup
+#include <f32file.h>
+
+// FORWARD DECLERATIONS
+class CMdSSqLiteConnection;
+class CBlacklistItem;
+class RRowData;
+
+/*!
+  @class CBlacklistServer
+  @discussion An instance of the CBlacklistServer object 
+  */
+class CBlacklistServer : public CPolicyServer
+    {
+    public:
+         /*!
+        @function NewL
+        @discussion factory function.
+        */
+        static CBlacklistServer* NewL();
+
+        /*!
+        @function NewLC
+        @discussion factory function, pointer is in cleanupstack.
+        */
+        static CBlacklistServer* NewLC();      
+
+        /*!
+        @function ~CBlacklistServer
+        @discussion standard C++ destructor.
+        */
+        virtual ~CBlacklistServer();
+
+        /*!
+        @function AddSession
+        @discussion adds new session.
+        */
+        void AddSession();
+        /*!
+        @function RemoveSession
+        @discussion removes session.
+        */
+        void RemoveSession();
+
+        /*!
+        @function MemoryHandle
+        @discussion returns memory handle.
+        @result integer value to indicate memory handle.
+        */
+        TInt MemoryHandle();
+
+        /*!
+        @function OpenDatabaseL
+        @discussion Opens server database.
+        */
+        void OpenDatabaseL();
+ 
+        /*!
+        @function AddL
+        @discussion Add object to server's list.
+        @param aMediaId - drive id where object is located (E,C ...).
+        @param aUri - object uri.
+        @param aLastModifiedTime - time when object is modified.
+        */
+        void AddL( const TUint32& mediaId, const TDesC& aUri, const TTime& aLastModifiedTime );
+
+        /*!
+        @function RemoveL
+        @discussion Removes object from server's list.
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        */
+        void RemoveL( const TUint32& mediaId, const TDesC& aUri );
+
+        /*!
+        @function RemoveFromDBL
+        @discussion removes object from server's database.
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        */
+        void RemoveFromDBL( const TDesC& aUri, const TUint32 aMediaId );
+
+        /*!
+        @function AddToDBL
+        @discussion Adds object to server's database.
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        @param aLastModifiedTime - time when object is modified.
+        */
+        void AddToDBL( const TDesC& aUri, const TUint32 aMediaId, const TInt64& aLastModifiedTime );
+
+        /*!
+        @function CloseDB
+        @discussion closes server's database.
+        */
+        void CloseDB();
+
+        /*!
+        @function ExeMainL
+        @discussion creates server. 
+        */
+        static void ExeMainL(); 
+    
+    protected: // Functions from base classes
+
+        /*!
+        @function CustomSecurityCheckL
+        @discussion check if service is allowed.
+        */
+        CPolicyServer::TCustomResult CustomSecurityCheckL( 
+            const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing );
+
+        /*!
+        @function CustomFailureActionL
+        @discussion not used.
+        */
+        CPolicyServer::TCustomResult CustomFailureActionL(
+            const RMessage2 &aMsg, TInt aAction, const TSecurityInfo &aMissing );   
+    private:
+
+        /*!
+        @function CBlacklistServer
+        @discussion standard C++ constructor
+        */
+        CBlacklistServer();
+
+        /*!
+        @function RBlacklistClient
+        @discussion two phase constructor
+        */
+        void ConstructL();
+
+        /*!
+        @function NewSessionL
+        @discussion creates new session
+        @param aVersion, server version.
+        @param aMessage, not used.
+        @result return blacklist session.
+        */
+        CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const;
+        
+        /*!
+        @function NewSessionL
+        @discussion creates new session
+        @param aVersion, server version.
+        @result KErrNone or error if server RunL fails. 
+        */
+        TInt RunError( TInt aError );
+
+    private:
+
+          /*!
+        @function CloseDatabase
+        @discussion closes server database.
+        */
+        void CloseDatabase();
+
+        /*!
+        @function LoadDatabaseToMemoryL
+        @discussion load database to server's list
+        */
+        void LoadDatabaseToMemoryL();
+     
+        /*!
+        @function CreateBlacklistTableL
+        @discussion Creates blacklist table.
+        */
+        void CreateBlacklistTableL();
+     
+        /*!
+        @function AddToMemoryTableL
+        @discussion adds object to server's list.
+        @param aLastModifiedTime - time when object is modified.
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        */
+        void AddToMemoryTableL( const TInt64& aModified, const TDesC& aUri,
+            const TUint32 aMediaId );
+     
+        /*!
+        @function RemoveFromMemoryTable
+        @discussion removes object from server's list 
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        */
+        void RemoveFromMemoryTable( const TDesC& aUri,
+            const TUint32 aMediaId );
+     
+        /*!
+        @function GetMemoryTableIndex
+        @discussion returns list index. 
+        @param aUri - object uri.
+        @param aMediaId - drive id where object is located (E,C ...).
+        @result returns list index.        
+        */
+        TInt GetMemoryTableIndex( const TDesC& aUri, TUint32 aMediaId );
+
+        /*!
+        @function TableExistsL
+        @discussion 
+        @result ETrue if table exists, EFalse otherwise. 
+        */
+        TBool TableExistsL();
+        
+        /*!
+        @function SerializeToSharedMemoryL
+        @discussion creates serialized buffer.
+        */
+        void SerializeToSharedMemoryL();
+        
+        /*!
+        @function WriteAllDataToDBL
+        @discussion write all data to server's database.
+        */
+        void WriteAllDataToDBL();
+        
+        /*!
+        @function CommitBufferedItemsL
+        @discussion commits buffered items to server's database.
+        */
+        void CommitBufferedItemsL();
+
+    private: // private data
+    
+        /*! @var iSessionCount to indicate session count.*/
+        TInt iSessionCount;
+    	
+        /*! @var iBlacklistServerChunk global memory chunk.*/
+    	RChunk iBlacklistServerChunk;
+        
+        /*! @var iSqLiteConnection to handle database connections.*/
+        CMdSSqLiteConnection* iSqLiteConnection;
+        
+        /*! @var iDatabaseOpen flag to indicate if database is open or not.*/
+        TBool iDatabaseOpen;
+        
+        /*! @var iDBUpdateNeeded flag to indicate if databse need updating.*/
+        TBool iDBUpdateNeeded;
+        
+        /*! @var iBlacklistMemoryTable contains objects which are serialized to client.*/
+        RPointerArray<CBlacklistItem> iBlacklistMemoryTable;
+
+        /*! @var iBufferedRemoveItems contains all buferred removed items.*/
+        RPointerArray<RRowData> iBufferedRemoveItems;
+
+        /*! @var iBufferedAddedItems contains all buferred added items.*/
+        RPointerArray<RRowData> iBufferedAddedItems;
+
+        /*! @var iHandle server handle.*/
+        TInt iHandle;
+    };
+
+#endif // __BLACKLISTSERVER_H__