harvester/blacklistserver/inc/blacklistserver.h
changeset 0 c53acadfccc6
equal deleted inserted replaced
-1:000000000000 0:c53acadfccc6
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 #ifndef __BLACKLISTSERVER_H__
       
    18 #define __BLACKLISTSERVER_H__
       
    19 
       
    20 // SYSTEM INCLUDE
       
    21 #include <e32base.h>    // CTrapCleanup
       
    22 #include <f32file.h>
       
    23 
       
    24 // FORWARD DECLERATIONS
       
    25 class CMdSSqLiteConnection;
       
    26 class CBlacklistItem;
       
    27 class RRowData;
       
    28 
       
    29 /*!
       
    30   @class CBlacklistServer
       
    31   @discussion An instance of the CBlacklistServer object 
       
    32   */
       
    33 class CBlacklistServer : public CPolicyServer
       
    34     {
       
    35     public:
       
    36          /*!
       
    37         @function NewL
       
    38         @discussion factory function.
       
    39         */
       
    40         static CBlacklistServer* NewL();
       
    41 
       
    42         /*!
       
    43         @function NewLC
       
    44         @discussion factory function, pointer is in cleanupstack.
       
    45         */
       
    46         static CBlacklistServer* NewLC();      
       
    47 
       
    48         /*!
       
    49         @function ~CBlacklistServer
       
    50         @discussion standard C++ destructor.
       
    51         */
       
    52         virtual ~CBlacklistServer();
       
    53 
       
    54         /*!
       
    55         @function AddSession
       
    56         @discussion adds new session.
       
    57         */
       
    58         void AddSession();
       
    59         /*!
       
    60         @function RemoveSession
       
    61         @discussion removes session.
       
    62         */
       
    63         void RemoveSession();
       
    64 
       
    65         /*!
       
    66         @function MemoryHandle
       
    67         @discussion returns memory handle.
       
    68         @result integer value to indicate memory handle.
       
    69         */
       
    70         TInt MemoryHandle();
       
    71 
       
    72         /*!
       
    73         @function OpenDatabaseL
       
    74         @discussion Opens server database.
       
    75         */
       
    76         void OpenDatabaseL();
       
    77  
       
    78         /*!
       
    79         @function AddL
       
    80         @discussion Add object to server's list.
       
    81         @param aMediaId - drive id where object is located (E,C ...).
       
    82         @param aUri - object uri.
       
    83         @param aLastModifiedTime - time when object is modified.
       
    84         */
       
    85         void AddL( const TUint32& mediaId, const TDesC& aUri, const TTime& aLastModifiedTime );
       
    86 
       
    87         /*!
       
    88         @function RemoveL
       
    89         @discussion Removes object from server's list.
       
    90         @param aUri - object uri.
       
    91         @param aMediaId - drive id where object is located (E,C ...).
       
    92         */
       
    93         void RemoveL( const TUint32& mediaId, const TDesC& aUri );
       
    94 
       
    95         /*!
       
    96         @function RemoveFromDBL
       
    97         @discussion removes object from server's database.
       
    98         @param aUri - object uri.
       
    99         @param aMediaId - drive id where object is located (E,C ...).
       
   100         */
       
   101         void RemoveFromDBL( const TDesC& aUri, const TUint32 aMediaId );
       
   102 
       
   103         /*!
       
   104         @function AddToDBL
       
   105         @discussion Adds object to server's database.
       
   106         @param aUri - object uri.
       
   107         @param aMediaId - drive id where object is located (E,C ...).
       
   108         @param aLastModifiedTime - time when object is modified.
       
   109         */
       
   110         void AddToDBL( const TDesC& aUri, const TUint32 aMediaId, const TInt64& aLastModifiedTime );
       
   111 
       
   112         /*!
       
   113         @function CloseDB
       
   114         @discussion closes server's database.
       
   115         */
       
   116         void CloseDB();
       
   117 
       
   118         /*!
       
   119         @function ExeMainL
       
   120         @discussion creates server. 
       
   121         */
       
   122         static void ExeMainL(); 
       
   123     
       
   124     protected: // Functions from base classes
       
   125 
       
   126         /*!
       
   127         @function CustomSecurityCheckL
       
   128         @discussion check if service is allowed.
       
   129         */
       
   130         CPolicyServer::TCustomResult CustomSecurityCheckL( 
       
   131             const RMessage2 &aMsg, TInt &aAction, TSecurityInfo &aMissing );
       
   132 
       
   133         /*!
       
   134         @function CustomFailureActionL
       
   135         @discussion not used.
       
   136         */
       
   137         CPolicyServer::TCustomResult CustomFailureActionL(
       
   138             const RMessage2 &aMsg, TInt aAction, const TSecurityInfo &aMissing );   
       
   139     private:
       
   140 
       
   141         /*!
       
   142         @function CBlacklistServer
       
   143         @discussion standard C++ constructor
       
   144         */
       
   145         CBlacklistServer();
       
   146 
       
   147         /*!
       
   148         @function RBlacklistClient
       
   149         @discussion two phase constructor
       
   150         */
       
   151         void ConstructL();
       
   152 
       
   153         /*!
       
   154         @function NewSessionL
       
   155         @discussion creates new session
       
   156         @param aVersion, server version.
       
   157         @param aMessage, not used.
       
   158         @result return blacklist session.
       
   159         */
       
   160         CSession2* NewSessionL( const TVersion& aVersion, const RMessage2& aMessage ) const;
       
   161         
       
   162         /*!
       
   163         @function NewSessionL
       
   164         @discussion creates new session
       
   165         @param aVersion, server version.
       
   166         @result KErrNone or error if server RunL fails. 
       
   167         */
       
   168         TInt RunError( TInt aError );
       
   169 
       
   170     private:
       
   171 
       
   172           /*!
       
   173         @function CloseDatabase
       
   174         @discussion closes server database.
       
   175         */
       
   176         void CloseDatabase();
       
   177 
       
   178         /*!
       
   179         @function LoadDatabaseToMemoryL
       
   180         @discussion load database to server's list
       
   181         */
       
   182         void LoadDatabaseToMemoryL();
       
   183      
       
   184         /*!
       
   185         @function CreateBlacklistTableL
       
   186         @discussion Creates blacklist table.
       
   187         */
       
   188         void CreateBlacklistTableL();
       
   189      
       
   190         /*!
       
   191         @function AddToMemoryTableL
       
   192         @discussion adds object to server's list.
       
   193         @param aLastModifiedTime - time when object is modified.
       
   194         @param aUri - object uri.
       
   195         @param aMediaId - drive id where object is located (E,C ...).
       
   196         */
       
   197         void AddToMemoryTableL( const TInt64& aModified, const TDesC& aUri,
       
   198             const TUint32 aMediaId );
       
   199      
       
   200         /*!
       
   201         @function RemoveFromMemoryTable
       
   202         @discussion removes object from server's list 
       
   203         @param aUri - object uri.
       
   204         @param aMediaId - drive id where object is located (E,C ...).
       
   205         */
       
   206         void RemoveFromMemoryTable( const TDesC& aUri,
       
   207             const TUint32 aMediaId );
       
   208      
       
   209         /*!
       
   210         @function GetMemoryTableIndex
       
   211         @discussion returns list index. 
       
   212         @param aUri - object uri.
       
   213         @param aMediaId - drive id where object is located (E,C ...).
       
   214         @result returns list index.        
       
   215         */
       
   216         TInt GetMemoryTableIndex( const TDesC& aUri, TUint32 aMediaId );
       
   217 
       
   218         /*!
       
   219         @function TableExistsL
       
   220         @discussion 
       
   221         @result ETrue if table exists, EFalse otherwise. 
       
   222         */
       
   223         TBool TableExistsL();
       
   224         
       
   225         /*!
       
   226         @function SerializeToSharedMemoryL
       
   227         @discussion creates serialized buffer.
       
   228         */
       
   229         void SerializeToSharedMemoryL();
       
   230         
       
   231         /*!
       
   232         @function WriteAllDataToDBL
       
   233         @discussion write all data to server's database.
       
   234         */
       
   235         void WriteAllDataToDBL();
       
   236         
       
   237         /*!
       
   238         @function CommitBufferedItemsL
       
   239         @discussion commits buffered items to server's database.
       
   240         */
       
   241         void CommitBufferedItemsL();
       
   242 
       
   243     private: // private data
       
   244     
       
   245         /*! @var iSessionCount to indicate session count.*/
       
   246         TInt iSessionCount;
       
   247     	
       
   248         /*! @var iBlacklistServerChunk global memory chunk.*/
       
   249     	RChunk iBlacklistServerChunk;
       
   250         
       
   251         /*! @var iSqLiteConnection to handle database connections.*/
       
   252         CMdSSqLiteConnection* iSqLiteConnection;
       
   253         
       
   254         /*! @var iDatabaseOpen flag to indicate if database is open or not.*/
       
   255         TBool iDatabaseOpen;
       
   256         
       
   257         /*! @var iDBUpdateNeeded flag to indicate if databse need updating.*/
       
   258         TBool iDBUpdateNeeded;
       
   259         
       
   260         /*! @var iBlacklistMemoryTable contains objects which are serialized to client.*/
       
   261         RPointerArray<CBlacklistItem> iBlacklistMemoryTable;
       
   262 
       
   263         /*! @var iBufferedRemoveItems contains all buferred removed items.*/
       
   264         RPointerArray<RRowData> iBufferedRemoveItems;
       
   265 
       
   266         /*! @var iBufferedAddedItems contains all buferred added items.*/
       
   267         RPointerArray<RRowData> iBufferedAddedItems;
       
   268 
       
   269         /*! @var iHandle server handle.*/
       
   270         TInt iHandle;
       
   271     };
       
   272 
       
   273 #endif // __BLACKLISTSERVER_H__