diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/agentlog/inc/nsmlagentlog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/agentlog/inc/nsmlagentlog.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,432 @@ +/* +* Copyright (c) 2005 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: AgentLog header +* +*/ + + + +#ifndef __AGENTLOG_H +#define __AGENTLOG_H + + +// INCLUDE FILES +#include +#include +#include +#include +#include + +// CONSTANTS + +//Database name & drive +const TInt KNSmlAgentLogDbDrive = EDriveC; +_LIT( KNSmlAgentLogDbName, "c:nsmlagentlog.db" ); + +const TInt KNSmlAgentLogFatMinSize = 1000; +const TInt KNSmlAgentLogFatMaxSize = 10000; + +//Database tables +_LIT( KNSmlTableAgentLog, "AgentLog" ); +_LIT( KNSmlTableAuthentication, "Authentication" ); + +// +_LIT( KNSmlTableDatastore, "Datastore" ); +// + +//table AgentLog columns +_LIT( KNSmlAgentLogId, "Id" ); +_LIT( KNSmlAgentLogImplementationUID, "ImplementationUID" ); +_LIT( KNSmlAgentLogLocalDatabase, "LocalDatabase" ); +_LIT( KNSmlAgentLogServerId, "ServerId" ); +_LIT( KNSmlAgentLogRemoteDatabase, "RemoteDatabase" ); +_LIT( KNSmlAgentLogLastSyncronised, "LastSyncronised" ); +_LIT( KNSmlAgentLogSlowSyncRequest, "SlowSyncRequest" ); +_LIT( KNSmlAgentLogLastSyncAnchor, "SyncAnchor" ); +_LIT( KNSmlAgentLogServerDeviceInfo, "ServerDeviceInfo" ); +_LIT( KNSmlAgentLogServerFilterInfo, "ServerFilterInfo" ); +_LIT( KNSmlAgentLogServerSupportsHierarchicalSync, "ServerSupportsHierarchicalSync" ); +_LIT( KNSmlAgentLogServerSupportsNOC, "ServerSupportsNOC" ); +_LIT( KNSmlAgentLogServerSyncTypes, "ServerSyncTypes" ); +//RD_SUSPEND_RESUME +_LIT( KNSmlAgentLogSuspendedState ,"SyncSuspendedState"); +_LIT( KNSmlAgentLogPreviousSyncType, "PreviousSyncType"); +_LIT( KNSmlAgentLogPreviousClientSyncType,"PreviousClientSyncType"); +//RD_SUSPEND_RESUME +//table Authentication columns +_LIT( KNSmlAuthenticationServerId, "ServerId" ); +_LIT( KNSmlAuthenticationNonce, "Nonce" ); +_LIT( KNSmlAuthenticationType, "Type" ); +_LIT( KNSmlAuthenticationSessionId, "SessionId" ); + +// SQL statements +_LIT( KSQLGetAgentLogRow, "SELECT * FROM AgentLog WHERE ImplementationUID = %d \ +AND LocalDatabase = '%S' AND ServerId = '%S'" ); +_LIT( KSQLGetAgentLogRowWithId, "SELECT * FROM AgentLog WHERE Id = %d" ); +_LIT( KSQLGetAgentLogRowWithServerId, "SELECT * FROM AgentLog WHERE ServerId = '%S'" ); +_LIT( KSQLGetAgentLogAll, "SELECT * FROM AgentLog" ); +_LIT( KSQLGetAuthenticationRow, "SELECT * FROM Authentication WHERE ServerId = '%S'" ); +_LIT( KSQLGetAuthenticationAll, "SELECT * FROM Authentication" ); +_LIT( KColumn, "%S"); + +// DATA TYPES + +enum TNSmlAgentLogData + { + EAgentLogImplementationUID, + EAgentLogLocalDatabase, + EAgentLogServerId, + EAgentLogRemoteDatabase, + EAgentLogLastSyncronised, + EAgentLogSlowSyncRequest, + EAgentLogLastSyncAnchor, + EAgentLogServerDeviceInfo, + EAgentLogServerSupportsNOC, + EAgentLogServerSyncTypes, + EAgentLogServerFilterInfo, + EAgentLogServerSupportsHierarchicalSync, + EAgentLogSyncSuspendedState, + EAgentLogPreviousSyncType, + EAgentLogPreviousClientSyncType + }; + +enum TNSmlAgentLogAuthenticationType + { + EAgentLogNoAuth, + EAgentLogBasic, + EAgentLogMD5 + }; + +//RD_SUSPEND_RESUME +//Suspend state column values +enum TNSmlSyncSuspendedState + { + EStateNotStarted = 0, + EStateClientModification, + EStateServerModification, + EStateDataUpdateStatus, + EStateMapAcknowledge + + }; + +//Sync type column values +enum TNSmlPreviousSyncType +{ + ETypeNotSet=0, + ESyncDSTwoWay=200, + ESyncDSSlowSync, + ESyncDSOneWayFromClient, + ESyncDSRefreshFromClient, + ESyncDSOneWayFromServer, + ESyncDSRefreshFromServer, + ESyncDSTwoWayByServer, + ESyncDSOneWayFromClientByServer, + ESyncDSRefreshFromClientByServer, + ESyncDSOneWayFromServerByServer, + ESyncDSRefreshFromServerByServer +}; +//RD_SUSPEND_RESUME + +// FORWARD DECLARATIONS +struct TNSmlCtCapData; +class CNSmlDbCaps; +struct TNSmlFilterCapData; + +// +// Table Modification columns +_LIT( KNSmlDatastoreRowID, "DatastoreRowID" ); +_LIT( KNSmlDatastoreAgentlogID, "DatastoreAID" ); +_LIT( KNSmlDatastoreStreamID, "DatastoreSID" ); +_LIT( KNSmlDatastoreStreamData, "DatastoreData" ); +_LIT( KSQLGetDatastoreAll, "SELECT * FROM Datastore" ); +// + +// CLASS DECLARATION + +/** +* CNSmlDSAgentLog provides an interface for accessing AgentLog database. +* +* @lib nsmlagentlog.lib +*/ +class CNSmlDSAgentLog : public CBase +{ + public: + enum TNSmlAgentDataStoreElement + { + EDataStore = 0x20, + ESourceRef, + EDisplayName, + EMaxGUIDSize, + ERxPref, + ERx, + ETxPref, + ETx, + EDSMem, + ESupportHierarchicalSync, + ESyncCap + }; + + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CNSmlDSAgentLog* NewL(); + + /** + * Two-phased constructor. + */ + IMPORT_C static CNSmlDSAgentLog* NewLC(); + + /** + * Destructor. + */ + ~CNSmlDSAgentLog(); + + public: // New functions + + /** + * Sets AgentLog key with given string values. + * @param aImplUid Implementation UID. + * @param aLocalDB Local database name. + * @param aServerId Remote server ID. + * @param aRemoteDB Remote database name. + */ + IMPORT_C void SetAgentLogKeyL( const TInt aImplUid, const TDesC& aLocalDB, const TDesC& aServerId, const TDesC& aRemoteDB ); + + /** + * Sets the given integer value for the given AgentLog datatype. + * @param aType Type of AgentLog data. + * @param aNewValue Integer value to be set. + */ + IMPORT_C void SetIntValueL( TNSmlAgentLogData aType, const TInt aNewValue ); + + /** + * Gets an integer value for the given AgentLog datatype. + * @param aType Type of AgentLog data. + * @return Integer value. + */ + IMPORT_C TInt IntValueL( TNSmlAgentLogData aType ); + + /** + * Sets the given time value for the given AgentLog datatype. + * @param aType Type of AgentLog data. + * @param aNewValue Time value to be set. + */ + IMPORT_C void SetTimeValueL( TNSmlAgentLogData aType, const TTime& aNewValue ); + + /** + * Gets the time value for the given AgentLog datatype. If the returned + * value is TTime(0), given value was not found. + * @param aType Type of AgentLog data. + * @return Time value. + */ + IMPORT_C TTime TimeValueL( TNSmlAgentLogData aType ); + + /** + * Sets the nonce data for given server ID. + * @param aServerId Remote server ID. + * @param aNewValue The nonce value to be set. + */ + IMPORT_C void SetNonceL( const TDesC& aServerId, const TDesC& aNewValue ); + + /** + * Gets the nonce data for given server ID. If length of the returned + * string is 0, nonce was not found. + * @param aServerId Remote server ID. + * @return Nonce data. + */ + IMPORT_C HBufC* NonceL( const TDesC& aServerId ); + + /** + * Sets the given session ID for the given server ID. + * @param aServerId Remote server ID. + * @param aSessionID Session ID. + */ + IMPORT_C void SetSessionIDL( const TDesC& aServerId, TInt aSessionID ); + + /** + * Gets the session ID for the given server ID. + * @param aServerId Remote server ID. + * @return Session ID. + */ + IMPORT_C TInt SessionIDL( const TDesC& aServerId ); + + /** + * Sets the authentication type for the given server ID. + * @param aServerId Remote server ID. + * @param aNewValue Authentication type. + */ + IMPORT_C void SetAuthTypeL( const TDesC& aServerId, const TNSmlAgentLogAuthenticationType aNewValue ); + + /** + * Gets the authentication type for the given server ID. + * @param aServerId Remote server ID. + * @return Authentication type. + */ + IMPORT_C TInt AuthTypeL( const TDesC& aServerId ); + + /** + * Replaces the give old server ID with new one. + * @param aOldServerId Old remote server ID. + * @param aNewValue New remote server ID. + */ + IMPORT_C void SetServerIdL( TDesC& aOldServerId, TDesC& aNewValue ); + + /** + * Sets the server device info for AgentLog. + * @param aDbCaps Server's database capabilities. + */ + IMPORT_C void SetServerDeviceInfoL( const RPointerArray& aDbCaps ); + + /** + * Gets the server device info for AgentLog. + * @param aDbCaps Server's database capabilities. + */ + IMPORT_C void GetServerDeviceInfoL( RPointerArray& aDbCaps ); + + /** + * Sets the server filter info for AgentLog. + * @param aFilterInfoArr Server's filter capabilities. + */ + IMPORT_C void SetServerFilterInfoL( const CArrayFix* aFilterInfoArr ); + + /** + * Gets the server filter info for AgentLog. + * @param aFilterInfoArr Server's filter capabilities. + */ + IMPORT_C void GetServerFilterInfoL( CArrayFix* aFilterInfoArr ); + +// + /** + * Opens the read stream. + * @param aUid UID of the stream. + * @return Pointer to the opened stream buffer. + */ + IMPORT_C MStreamBuf* OpenReadStreamL( TUid aUid ); + /** + * Opens the write stream + * @param aUid UID of the stream. + * @return Pointer to the opened stream buffer. + */ + IMPORT_C MStreamBuf* OpenWriteStreamL( TUid aUid ); + /** + * Checks if stream uid is already in use. + * @param aUid UID of the stream. + * @return ETrue if in use. Otherwise EFalse. + */ + IMPORT_C TBool IsPresentL( TUid aUid ); + /** + * Delete stream for Uid. + * @param aUid UID of the stream. + */ + IMPORT_C void DeleteStreamL( TUid aUid ); + /** + * Delete stream for datastore. + */ + IMPORT_C void DeleteStoreL(); + /** + * Closes write stream. + * @param aCommit Boolean value, which indicates if stream need to be committed before closing. + */ + IMPORT_C void CloseWriteStreamL( TBool aCommit = ETrue ); + /** + * Closes read stream. + */ + IMPORT_C void CloseReadStreamL(); +// + + private: + + /** + * Creates Agent Log database. + * @param aFullName Name and path of database. + */ + void CreateDatabaseL( const TDesC& aFullName ); + + /** + * Generates a unique Id to a given table. + */ + TInt GenerateIdL(); + + /** + * Initialises new row in AgentLog table with set key values. + */ + void InitNewRowL(); + + /** + * Makes an SQL query string for getting a row with currently set + * AgentLog key from AgentLog table. + */ + HBufC* AgentLogRowSqlLC() const; + + /** + * Makes an SQL query string for getting a row with given server ID + * from Authentication table + * @param aServerId Remote server ID. + */ + HBufC* AuthenticationSqlLC( const TDesC& aServerId ) const; + + /** + * Closes the view and then prepares it with the given values. + * @param aSql SQL statement defining the view. + * @param aAccess Permitted operations for the view. + */ + void PrepareViewL( const TDesC& aSql, RDbRowSet::TAccess aAccess ); + + /** + * Commits update and compacts the database. + */ + void CommitAndCompact(); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + private: // Data + TInt iID; + + TInt iImplUid; + HBufC* iLocalDB; + HBufC* iServerId; + HBufC* iRemoteDB; + + RDbNamedDatabase iDatabase; + RFs iFsSession; + RDbs iRdbSession; + + RDbTable iTableAgentLog; + CDbColSet* iColSet; + RDbView iView; + + RDbTable iTableAuthentication; + CDbColSet* iColSetTableAuth; + +// + RDbTable iTableDatastore; + CDbColSet* iColSetTableDS; + RDbView iWSView; + RDbView iRSView; + TBool iWriteStreamOpen; + TBool iReadStreamOpen; + RDbColWriteStream iWs; + RDbColReadStream iRs; +// +}; + + +#endif // __AGENTLOG_H + +// End of File