--- /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 <e32std.h>
+#include <e32base.h>
+#include <d32dbms.h>
+#include <f32file.h>
+#include <s32file.h>
+
+// 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" );
+
+// <MAPINFO_RESEND_BEGIN>
+_LIT( KNSmlTableDatastore, "Datastore" );
+// <MAPINFO_RESEND_END>
+
+//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;
+
+// <MAPINFO_RESEND_BEGIN>
+// Table Modification columns
+_LIT( KNSmlDatastoreRowID, "DatastoreRowID" );
+_LIT( KNSmlDatastoreAgentlogID, "DatastoreAID" );
+_LIT( KNSmlDatastoreStreamID, "DatastoreSID" );
+_LIT( KNSmlDatastoreStreamData, "DatastoreData" );
+_LIT( KSQLGetDatastoreAll, "SELECT * FROM Datastore" );
+// <MAPINFO_RESEND_END>
+
+// 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<CNSmlDbCaps>& aDbCaps );
+
+ /**
+ * Gets the server device info for AgentLog.
+ * @param aDbCaps Server's database capabilities.
+ */
+ IMPORT_C void GetServerDeviceInfoL( RPointerArray<CNSmlDbCaps>& aDbCaps );
+
+ /**
+ * Sets the server filter info for AgentLog.
+ * @param aFilterInfoArr Server's filter capabilities.
+ */
+ IMPORT_C void SetServerFilterInfoL( const CArrayFix<TNSmlFilterCapData>* aFilterInfoArr );
+
+ /**
+ * Gets the server filter info for AgentLog.
+ * @param aFilterInfoArr Server's filter capabilities.
+ */
+ IMPORT_C void GetServerFilterInfoL( CArrayFix<TNSmlFilterCapData>* aFilterInfoArr );
+
+// <MAPINFO_RESEND_MOD_BEGIN>
+ /**
+ * 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();
+// <MAPINFO_RESEND_MOD_END>
+
+ 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;
+
+// <MAPINFO_RESEND_BEGIN>
+ RDbTable iTableDatastore;
+ CDbColSet* iColSetTableDS;
+ RDbView iWSView;
+ RDbView iRSView;
+ TBool iWriteStreamOpen;
+ TBool iReadStreamOpen;
+ RDbColWriteStream iWs;
+ RDbColReadStream iRs;
+// <MAPINFO_RESEND_END>
+};
+
+
+#endif // __AGENTLOG_H
+
+// End of File